Assemblies were generated using SHASTA and Canu. Three sets of parameters were used with SHASTA.

Stats.SHASTA.k10 Stats.SHASTA.k12 Stats.SHASTA.k8 Stats.Canu
Number.Contigs 1393 1884 3360 98
Total.Assembled.Bases 2.476E+08 1.873E+08 2.749E+08 2.704E+08
Maximum.Contig.Length 7.005E+06 4.253E+06 1.311E+07 3.677E+07
Percent.N 0 0 0 0
GC.Content 0.3567 0.3529 0.3626 0.3604

Scaffold N50 is an important attribute for assessing a genome assembly. Below we present NXX defined similarly as N50.

NXX LXX.SHASTA.k10 Length.SHASTA.k10 LXX.SHASTA.k12 Length.SHASTA.k12 LXX.SHASTA.k8 Length.SHASTA.k8 LXX.Canu Length.Canu
N10 5 4,570,304 bp 8 1,754,081 bp 3 8,825,071 bp 1 36,769,623 bp
N20 12 3,151,112 bp 22 1,085,465 bp 6 7,563,619 bp 3 11,056,894 bp
N30 21 2,035,684 bp 48 588,786 bp 10 5,113,312 bp 5 10,095,275 bp
N40 39 1,106,116 bp 86 413,238 bp 17 3,638,477 bp 9 7,866,814 bp
N50 67 718,850 bp 143 272,727 bp 25 2,760,205 bp 12 6,977,363 bp
N60 107 545,752 bp 227 183,577 bp 37 2,113,198 bp 17 5,539,772 bp
N70 162 382,051 bp 352 123,090 bp 52 1,620,868 bp 22 4,600,950 bp
N80 240 258,557 bp 541 78,700 bp 73 1,054,307 bp 29 3,527,172 bp
N90 367 146,922 bp 850 45,597 bp 106 655,895 bp 37 3,077,120 bp

Another way to look at the contributions of different length of contigs to the total genome size, the following plot provides a graphical representation.

LS0tCnRpdGxlOiAiR2Vub21pY3MgQXNzZW1ibHkgKE9OVCkiCm91dHB1dDoKICBodG1sX25vdGVib29rOgojICAgY29kZV9mb2xkaW5nPSJoaWRlIgogIGh0bWxfZG9jdW1lbnQ6CiMgICBjb2RlX2ZvbGRpbmc9ImhpZGUiCi0tLQoKCiMjIyMgQXNzZW1ibGllcyB3ZXJlIGdlbmVyYXRlZCB1c2luZyBTSEFTVEEgYW5kIENhbnUuIFRocmVlIHNldHMgb2YgcGFyYW1ldGVycyB3ZXJlIHVzZWQgd2l0aCBTSEFTVEEuCgoKYGBge3IgaW5jbHVkZT1GQUxTRX0KbGlicmFyeShTaG9ydFJlYWQpCmxpYnJhcnkoQmlvc3RyaW5ncykKbGlicmFyeShnZ3Bsb3QyKQpsaWJyYXJ5KGthYmxlRXh0cmEpCmxpYnJhcnkoa25pdHIpCmxpYnJhcnkocGxvdGx5KQpgYGAKCgpgYGB7ciBlY2hvPUZBTFNFfQojIyMjIDEwWCBhc3NlbWJseQojc3lzdGVtKCJmb2xkIC13IDEwMDAgYmxhY2tfdGFpbF9kZWVyLnBzZXVkb2hhcC5mYXN0YSA+IGJsYWNrX3RhaWxfZGVlci5wc2V1ZG9oYXAuZm9sZGVkLmZhc3RhIiwgaW50ZXJuPVRSVUUpCiNzeXN0ZW0oImN1dCAtZCcgJyAtZjEgYmxhY2tfdGFpbF9kZWVyLnBzZXVkb2hhcC5mYXN0YSA+IGJsYWNrX3RhaWxfZGVlci5wc2V1ZG9oYXAucmVmb3JtLmZhc3RhIiwgaW50ZXJuPVRSVUUpCmFzc2VtYmx5MTB4IDwtIHJlYWRETkFTdHJpbmdTZXQoIi4uLzAzLVNIQVNUQS9ydW4xL0Fzc2VtYmx5LmZhc3RhIikKCiMgcmVvcmRlciBsYXJnZXN0IHRvIHNtYWxsZXN0CmFzc2VtYmx5MTB4IDwtIGFzc2VtYmx5MTB4W29yZGVyKC13aWR0aChhc3NlbWJseTEweCkpXQp3aWR0aC5hc3NlbWJseSA8LSBhcy5udW1lcmljKHdpZHRoKGFzc2VtYmx5MTB4KSkKCmExMFhfbnVtYmVyX29mX2NvbnRpZ3MgPC0gbGVuZ3RoKGFzc2VtYmx5MTB4KQphMTBYX2dlbm9tZV9zaXplIDwtIHN1bSh3aWR0aC5hc3NlbWJseSkKYTEwWF9tYXhfY29udGlnIDwtIG1heCh3aWR0aC5hc3NlbWJseSkKCmFmIDwtIGFscGhhYmV0RnJlcXVlbmN5KGFzc2VtYmx5MTB4KVssYygiQSIsIkMiLCJHIiwiVCIsIk4iKV0KYTEwWF9wZXJjZW50TiA8LSBzdW0oYWZbLCdOJ10pL3N1bShhcy5udW1lcmljKGFmKSkqMTAwCmExMFhfZ2NieWNvbnRpZyA8LSByb3dTdW1zKGFmWyxjKCJHIiwiQyIpXSkvcm93U3VtcyhhZlssYygiQSIsIkMiLCJHIiwiVCIpXSkKYTEwWF9nY2NvbnRlbnQgPC0gc3VtKHJvd1N1bXMoYWZbLGMoIkciLCJDIildKSkvc3VtKHJvd1N1bXMoYWZbLGMoIkEiLCJDIiwiRyIsIlQiKV0pKQpjcyA8LSBjdW1zdW0od2lkdGguYXNzZW1ibHkpCmQycCA8LSBkYXRhLmZyYW1lKENvbnRpZ3M9d2lkdGguYXNzZW1ibHksIEN1bXUubGVucz1jcywgc3RyaW5nc0FzRmFjdG9ycz1GKQoKTmxlbnMgPC0gd2lkdGguYXNzZW1ibHlbd2hpY2goIWR1cGxpY2F0ZWQodHJ1bmMoKGNzL3N1bSh3aWR0aC5hc3NlbWJseSkqMTApKSkpXQpOcGVyYyA8LSBzaWduaWYoKGNzL3N1bSh3aWR0aC5hc3NlbWJseSkpW3doaWNoKCFkdXBsaWNhdGVkKHRydW5jKChjcy9zdW0od2lkdGguYXNzZW1ibHkpKjEwKSkpKV0qMTAwLDEpCk5pbmQgPC0gd2hpY2goIWR1cGxpY2F0ZWQodHJ1bmMoKGNzL3N1bSh3aWR0aC5hc3NlbWJseSkqMTApKSkpCgpObGVucyA8LSBObGVuc1t3aGljaChOcGVyYyAlaW4lIHNlcSgxMCw5MCxieT0xMCkpXQpOaW5kIDwtIE5pbmRbd2hpY2goTnBlcmMgJWluJSBzZXEoMTAsOTAsYnk9MTApKV0KTnBlcmMgPC0gTnBlcmNbd2hpY2goTnBlcmMgJWluJSBzZXEoMTAsOTAsYnk9MTApKV0KCmBgYAoKCmBgYHtyIGVjaG89RkFMU0V9CiMjIyMgMTBYIGFzc2VtYmx5IE5vdmFzZXEgc3lzdGVtCiNzeXN0ZW0oImZvbGQgLXcgMTAwMCBibGFja190YWlsX2RlZXIucHNldWRvaGFwLmZhc3RhID4gYmxhY2tfdGFpbF9kZWVyLnBzZXVkb2hhcC5mb2xkZWQuZmFzdGEiLCBpbnRlcm49VFJVRSkKYXNzZW1ibHkxMHgubm92YSA8LSByZWFkRE5BU3RyaW5nU2V0KCIuLi8wMy1TSEFTVEEvcnVuMi9Bc3NlbWJseS5mYXN0YSIpCgojIHJlb3JkZXIgbGFyZ2VzdCB0byBzbWFsbGVzdAphc3NlbWJseTEweC5ub3ZhIDwtIGFzc2VtYmx5MTB4Lm5vdmFbb3JkZXIoLXdpZHRoKGFzc2VtYmx5MTB4Lm5vdmEpKV0Kd2lkdGguYXNzZW1ibHkubm92YSA8LSBhcy5udW1lcmljKHdpZHRoKGFzc2VtYmx5MTB4Lm5vdmEpKQoKYTEwWF9udW1iZXJfb2ZfY29udGlncy5ub3ZhIDwtIGxlbmd0aChhc3NlbWJseTEweC5ub3ZhKQphMTBYX2dlbm9tZV9zaXplLm5vdmEgPC0gc3VtKHdpZHRoLmFzc2VtYmx5Lm5vdmEpCmExMFhfbWF4X2NvbnRpZy5ub3ZhIDwtIG1heCh3aWR0aC5hc3NlbWJseS5ub3ZhKQoKYWYubm92YSA8LSBhbHBoYWJldEZyZXF1ZW5jeShhc3NlbWJseTEweC5ub3ZhKVssYygiQSIsIkMiLCJHIiwiVCIsIk4iKV0KYTEwWF9wZXJjZW50Ti5ub3ZhIDwtIHN1bShhZi5ub3ZhWywnTiddKS9zdW0oYXMubnVtZXJpYyhhZi5ub3ZhKSkqMTAwCmExMFhfZ2NieWNvbnRpZy5ub3ZhIDwtIHJvd1N1bXMoYWYubm92YVssYygiRyIsIkMiKV0pL3Jvd1N1bXMoYWYubm92YVssYygiQSIsIkMiLCJHIiwiVCIpXSkKYTEwWF9nY2NvbnRlbnQubm92YSA8LSBzdW0ocm93U3VtcyhhZi5ub3ZhWyxjKCJHIiwiQyIpXSkpL3N1bShyb3dTdW1zKGFmLm5vdmFbLGMoIkEiLCJDIiwiRyIsIlQiKV0pKQpjcy5ub3ZhIDwtIGN1bXN1bSh3aWR0aC5hc3NlbWJseS5ub3ZhKQpkMnAubm92YSA8LSBkYXRhLmZyYW1lKENvbnRpZ3M9d2lkdGguYXNzZW1ibHkubm92YSwgQ3VtdS5sZW5zPWNzLm5vdmEsIHN0cmluZ3NBc0ZhY3RvcnM9RikKCk5sZW5zLm5vdmEgPC0gd2lkdGguYXNzZW1ibHkubm92YVt3aGljaCghZHVwbGljYXRlZCh0cnVuYygoY3Mubm92YS9zdW0od2lkdGguYXNzZW1ibHkubm92YSkqMTApKSkpXQpOcGVyYy5ub3ZhIDwtIHNpZ25pZigoY3Mubm92YS9zdW0od2lkdGguYXNzZW1ibHkubm92YSkpW3doaWNoKCFkdXBsaWNhdGVkKHRydW5jKChjcy5ub3ZhL3N1bSh3aWR0aC5hc3NlbWJseS5ub3ZhKSoxMCkpKSldKjEwMCwxKQpOaW5kLm5vdmEgPC0gd2hpY2goIWR1cGxpY2F0ZWQodHJ1bmMoKGNzLm5vdmEvc3VtKHdpZHRoLmFzc2VtYmx5Lm5vdmEpKjEwKSkpKQoKTmxlbnMubm92YSA8LSBObGVucy5ub3ZhW3doaWNoKE5wZXJjLm5vdmEgJWluJSBzZXEoMTAsOTAsYnk9MTApKV0KTmluZC5ub3ZhIDwtIE5pbmQubm92YVt3aGljaChOcGVyYy5ub3ZhICVpbiUgc2VxKDEwLDkwLGJ5PTEwKSldCk5wZXJjLm5vdmEgPC0gTnBlcmMubm92YVt3aGljaChOcGVyYy5ub3ZhICVpbiUgc2VxKDEwLDkwLGJ5PTEwKSldCmBgYAoKCmBgYHtyIGVjaG89RkFMU0V9CiMjIyMgMTBYIGFzc2VtYmx5IE5vdmFzZXEgc3lzdGVtCiNzeXN0ZW0oImZvbGQgLXcgMTAwMCBibGFja190YWlsX2RlZXIucHNldWRvaGFwLmZhc3RhID4gYmxhY2tfdGFpbF9kZWVyLnBzZXVkb2hhcC5mb2xkZWQuZmFzdGEiLCBpbnRlcm49VFJVRSkKYXNzZW1ibHkxMHguY3V0OGsgPC0gcmVhZEROQVN0cmluZ1NldCgiLi4vMDMtU0hBU1RBL3J1bjMvQXNzZW1ibHkuZmFzdGEiKQoKIyByZW9yZGVyIGxhcmdlc3QgdG8gc21hbGxlc3QKYXNzZW1ibHkxMHguY3V0OGsgPC0gYXNzZW1ibHkxMHguY3V0OGtbb3JkZXIoLXdpZHRoKGFzc2VtYmx5MTB4LmN1dDhrKSldCndpZHRoLmFzc2VtYmx5LmN1dDhrIDwtIGFzLm51bWVyaWMod2lkdGgoYXNzZW1ibHkxMHguY3V0OGspKQoKYTEwWF9udW1iZXJfb2ZfY29udGlncy5jdXQ4ayA8LSBsZW5ndGgoYXNzZW1ibHkxMHguY3V0OGspCmExMFhfZ2Vub21lX3NpemUuY3V0OGsgPC0gc3VtKHdpZHRoLmFzc2VtYmx5LmN1dDhrKQphMTBYX21heF9jb250aWcuY3V0OGsgPC0gbWF4KHdpZHRoLmFzc2VtYmx5LmN1dDhrKQoKYWYuY3V0OGsgPC0gYWxwaGFiZXRGcmVxdWVuY3koYXNzZW1ibHkxMHguY3V0OGspWyxjKCJBIiwiQyIsIkciLCJUIiwiTiIpXQphMTBYX3BlcmNlbnROLmN1dDhrIDwtIHN1bShhZi5jdXQ4a1ssJ04nXSkvc3VtKGFzLm51bWVyaWMoYWYuY3V0OGspKSoxMDAKYTEwWF9nY2J5Y29udGlnLmN1dDhrIDwtIHJvd1N1bXMoYWYuY3V0OGtbLGMoIkciLCJDIildKS9yb3dTdW1zKGFmLmN1dDhrWyxjKCJBIiwiQyIsIkciLCJUIildKQphMTBYX2djY29udGVudC5jdXQ4ayA8LSBzdW0ocm93U3VtcyhhZi5jdXQ4a1ssYygiRyIsIkMiKV0pKS9zdW0ocm93U3VtcyhhZi5jdXQ4a1ssYygiQSIsIkMiLCJHIiwiVCIpXSkpCmNzLmN1dDhrIDwtIGN1bXN1bSh3aWR0aC5hc3NlbWJseS5jdXQ4aykKZDJwLmN1dDhrIDwtIGRhdGEuZnJhbWUoQ29udGlncz13aWR0aC5hc3NlbWJseS5jdXQ4aywgQ3VtdS5sZW5zPWNzLmN1dDhrLCBzdHJpbmdzQXNGYWN0b3JzPUYpCgpObGVucy5jdXQ4ayA8LSB3aWR0aC5hc3NlbWJseS5jdXQ4a1t3aGljaCghZHVwbGljYXRlZCh0cnVuYygoY3MuY3V0OGsvc3VtKHdpZHRoLmFzc2VtYmx5LmN1dDhrKSoxMCkpKSldCk5wZXJjLmN1dDhrIDwtIHNpZ25pZigoY3MuY3V0OGsvc3VtKHdpZHRoLmFzc2VtYmx5LmN1dDhrKSlbd2hpY2goIWR1cGxpY2F0ZWQodHJ1bmMoKGNzLmN1dDhrL3N1bSh3aWR0aC5hc3NlbWJseS5jdXQ4aykqMTApKSkpXSoxMDAsMSkKTmluZC5jdXQ4ayA8LSB3aGljaCghZHVwbGljYXRlZCh0cnVuYygoY3MuY3V0OGsvc3VtKHdpZHRoLmFzc2VtYmx5LmN1dDhrKSoxMCkpKSkKCk5sZW5zLmN1dDhrIDwtIE5sZW5zLmN1dDhrW3doaWNoKE5wZXJjLmN1dDhrICVpbiUgc2VxKDEwLDkwLGJ5PTEwKSldCk5pbmQuY3V0OGsgPC0gTmluZC5jdXQ4a1t3aGljaChOcGVyYy5jdXQ4ayAlaW4lIHNlcSgxMCw5MCxieT0xMCkpXQpOcGVyYy5jdXQ4ayA8LSBOcGVyYy5jdXQ4a1t3aGljaChOcGVyYy5jdXQ4ayAlaW4lIHNlcSgxMCw5MCxieT0xMCkpXQpgYGAKCgpgYGB7ciBlY2hvPUZBTFNFfQojIyMjIDEwWCBhc3NlbWJseSBOb3Zhc2VxIHN5c3RlbQojc3lzdGVtKCJmb2xkIC13IDEwMDAgYmxhY2tfdGFpbF9kZWVyLnBzZXVkb2hhcC5mYXN0YSA+IGJsYWNrX3RhaWxfZGVlci5wc2V1ZG9oYXAuZm9sZGVkLmZhc3RhIiwgaW50ZXJuPVRSVUUpCmFzc2VtYmx5MTB4LmN1dDdrOGsgPC0gcmVhZEROQVN0cmluZ1NldCgiLi4vMDMtQ0FOVS9hc20uY29udGlncy5mYXN0YSIpCgojIHJlb3JkZXIgbGFyZ2VzdCB0byBzbWFsbGVzdAphc3NlbWJseTEweC5jdXQ3azhrIDwtIGFzc2VtYmx5MTB4LmN1dDdrOGtbb3JkZXIoLXdpZHRoKGFzc2VtYmx5MTB4LmN1dDdrOGspKV0Kd2lkdGguYXNzZW1ibHkuY3V0N2s4ayA8LSBhcy5udW1lcmljKHdpZHRoKGFzc2VtYmx5MTB4LmN1dDdrOGspKQoKYTEwWF9udW1iZXJfb2ZfY29udGlncy5jdXQ3azhrIDwtIGxlbmd0aChhc3NlbWJseTEweC5jdXQ3azhrKQphMTBYX2dlbm9tZV9zaXplLmN1dDdrOGsgPC0gc3VtKHdpZHRoLmFzc2VtYmx5LmN1dDdrOGspCmExMFhfbWF4X2NvbnRpZy5jdXQ3azhrIDwtIG1heCh3aWR0aC5hc3NlbWJseS5jdXQ3azhrKQoKYWYuY3V0N2s4ayA8LSBhbHBoYWJldEZyZXF1ZW5jeShhc3NlbWJseTEweC5jdXQ3azhrKVssYygiQSIsIkMiLCJHIiwiVCIsIk4iKV0KYTEwWF9wZXJjZW50Ti5jdXQ3azhrIDwtIHN1bShhZi5jdXQ3azhrWywnTiddKS9zdW0oYXMubnVtZXJpYyhhZi5jdXQ3azhrKSkqMTAwCmExMFhfZ2NieWNvbnRpZy5jdXQ3azhrIDwtIHJvd1N1bXMoYWYuY3V0N2s4a1ssYygiRyIsIkMiKV0pL3Jvd1N1bXMoYWYuY3V0N2s4a1ssYygiQSIsIkMiLCJHIiwiVCIpXSkKYTEwWF9nY2NvbnRlbnQuY3V0N2s4ayA8LSBzdW0ocm93U3VtcyhhZi5jdXQ3azhrWyxjKCJHIiwiQyIpXSkpL3N1bShyb3dTdW1zKGFmLmN1dDdrOGtbLGMoIkEiLCJDIiwiRyIsIlQiKV0pKQpjcy5jdXQ3azhrIDwtIGN1bXN1bSh3aWR0aC5hc3NlbWJseS5jdXQ3azhrKQpkMnAuY3V0N2s4ayA8LSBkYXRhLmZyYW1lKENvbnRpZ3M9d2lkdGguYXNzZW1ibHkuY3V0N2s4aywgQ3VtdS5sZW5zPWNzLmN1dDdrOGssIHN0cmluZ3NBc0ZhY3RvcnM9RikKCk5sZW5zLmN1dDdrOGsgPC0gd2lkdGguYXNzZW1ibHkuY3V0N2s4a1t3aGljaCghZHVwbGljYXRlZCh0cnVuYygoY3MuY3V0N2s4ay9zdW0od2lkdGguYXNzZW1ibHkuY3V0N2s4aykqMTApKSkpXQpOcGVyYy5jdXQ3azhrIDwtIHNpZ25pZigoY3MuY3V0N2s4ay9zdW0od2lkdGguYXNzZW1ibHkuY3V0N2s4aykpW3doaWNoKCFkdXBsaWNhdGVkKHRydW5jKChjcy5jdXQ3azhrL3N1bSh3aWR0aC5hc3NlbWJseS5jdXQ3azhrKSoxMCkpKSldKjEwMCwxKQpOaW5kLmN1dDdrOGsgPC0gd2hpY2goIWR1cGxpY2F0ZWQodHJ1bmMoKGNzLmN1dDdrOGsvc3VtKHdpZHRoLmFzc2VtYmx5LmN1dDdrOGspKjEwKSkpKQoKTmxlbnMuY3V0N2s4ayA8LSBObGVucy5jdXQ3azhrW3doaWNoKE5wZXJjLmN1dDdrOGsgJWluJSBzZXEoMTAsOTAsYnk9MTApKV0KTmluZC5jdXQ3azhrIDwtIE5pbmQuY3V0N2s4a1t3aGljaChOcGVyYy5jdXQ3azhrICVpbiUgc2VxKDEwLDkwLGJ5PTEwKSldCk5wZXJjLmN1dDdrOGsgPC0gTnBlcmMuY3V0N2s4a1t3aGljaChOcGVyYy5jdXQ3azhrICVpbiUgc2VxKDEwLDkwLGJ5PTEwKSldCmBgYAoKYGBge3IgZWNobz1GQUxTRX0KYTEwWF9OZGF0YSA8LSBkYXRhLmZyYW1lKE5YWD1OcGVyYywgTFhYLlNIQVNUQS5rMTA9TmluZCwgTGVuZ3RoLlNIQVNUQS5rMTA9TmxlbnMsIExYWC5TSEFTVEEuazEyPU5pbmQubm92YSwgTGVuZ3RoLlNIQVNUQS5rMTI9TmxlbnMubm92YSwgTFhYLlNIQVNUQS5rOD1OaW5kLmN1dDhrLCBMZW5ndGguU0hBU1RBLms4PU5sZW5zLmN1dDhrLCBMWFguQ2FudT1OaW5kLmN1dDdrOGssIExlbmd0aC5DYW51PU5sZW5zLmN1dDdrOGspCgphMTBYX05kYXRhMiA8LSBhMTBYX05kYXRhCmExMFhfTmRhdGEyJExlbmd0aC5TSEFTVEEuazEwIDwtICBwYXN0ZShmb3JtYXRDKGExMFhfTmRhdGEyJExlbmd0aC5TSEFTVEEuazEwLCBmb3JtYXQ9J2QnLCBiaWcubWFyaz0nLCcpLCJicCIpCmExMFhfTmRhdGEyJE5YWCA8LSBwYXN0ZTAoIk4iLGExMFhfTmRhdGEyJE5YWCkKYTEwWF9OZGF0YTIkTGVuZ3RoLlNIQVNUQS5rMTIgPC0gIHBhc3RlKGZvcm1hdEMoYTEwWF9OZGF0YTIkTGVuZ3RoLlNIQVNUQS5rMTIsIGZvcm1hdD0nZCcsIGJpZy5tYXJrPScsJyksImJwIikKYTEwWF9OZGF0YTIkTGVuZ3RoLlNIQVNUQS5rOCA8LSAgcGFzdGUoZm9ybWF0QyhhMTBYX05kYXRhMiRMZW5ndGguU0hBU1RBLms4LCBmb3JtYXQ9J2QnLCBiaWcubWFyaz0nLCcpLCJicCIpCmExMFhfTmRhdGEyJExlbmd0aC5DYW51IDwtICBwYXN0ZShmb3JtYXRDKGExMFhfTmRhdGEyJExlbmd0aC5DYW51LCBmb3JtYXQ9J2QnLCBiaWcubWFyaz0nLCcpLCJicCIpCgpgYGAKCmBgYHtyIGVjaG89RkFMU0V9Cm9zX05kYXRhIDwtIGRhdGEuZnJhbWUoU3RhdHMuU0hBU1RBLmsxMD1jKGExMFhfbnVtYmVyX29mX2NvbnRpZ3MsIGExMFhfZ2Vub21lX3NpemUsIGExMFhfbWF4X2NvbnRpZywgYTEwWF9wZXJjZW50TiwgYTEwWF9nY2NvbnRlbnQpLAoJCVN0YXRzLlNIQVNUQS5rMTI9YyhhMTBYX251bWJlcl9vZl9jb250aWdzLm5vdmEsIGExMFhfZ2Vub21lX3NpemUubm92YSwgCgkJCWExMFhfbWF4X2NvbnRpZy5ub3ZhLCBhMTBYX3BlcmNlbnROLm5vdmEsIGExMFhfZ2Njb250ZW50Lm5vdmEpLAoJCVN0YXRzLlNIQVNUQS5rOD1jKGExMFhfbnVtYmVyX29mX2NvbnRpZ3MuY3V0OGssIGExMFhfZ2Vub21lX3NpemUuY3V0OGssIAoJCQlhMTBYX21heF9jb250aWcuY3V0OGssIGExMFhfcGVyY2VudE4uY3V0OGssIGExMFhfZ2Njb250ZW50LmN1dDhrKSwKCQlTdGF0cy5DYW51PWMoYTEwWF9udW1iZXJfb2ZfY29udGlncy5jdXQ3azhrLCBhMTBYX2dlbm9tZV9zaXplLmN1dDdrOGssIAoJCQlhMTBYX21heF9jb250aWcuY3V0N2s4aywgYTEwWF9wZXJjZW50Ti5jdXQ3azhrLCBhMTBYX2djY29udGVudC5jdXQ3azhrKSwKCQlzdHJpbmdzQXNGYWN0b3JzPUYpCm9zX05kYXRhJFN0YXRzLlNIQVNUQS5rMTAgPC0gZm9ybWF0Qyhvc19OZGF0YSRTdGF0cy5TSEFTVEEuazEwLCBmb3JtYXQ9J0cnKQpvc19OZGF0YSRTdGF0cy5TSEFTVEEuazEyIDwtIGZvcm1hdEMob3NfTmRhdGEkU3RhdHMuU0hBU1RBLmsxMiwgZm9ybWF0PSdHJykKb3NfTmRhdGEkU3RhdHMuU0hBU1RBLms4IDwtIGZvcm1hdEMob3NfTmRhdGEkU3RhdHMuU0hBU1RBLms4LCBmb3JtYXQ9J0cnKQpvc19OZGF0YSRTdGF0cy5DYW51IDwtIGZvcm1hdEMob3NfTmRhdGEkU3RhdHMuQ2FudSwgZm9ybWF0PSdHJykKcm93bmFtZXMob3NfTmRhdGEpIDwtIGMoIk51bWJlci5Db250aWdzIiwgIlRvdGFsLkFzc2VtYmxlZC5CYXNlcyIsICJNYXhpbXVtLkNvbnRpZy5MZW5ndGgiLCAiUGVyY2VudC5OIiwgIkdDLkNvbnRlbnQiKQp0YjEgPC0ga2FibGUob3NfTmRhdGEsIGFsaWduPSdjJywgcm93Lm5hbWVzPVQsICJodG1sIikKa2FibGVfc3R5bGluZyh0YjEsIGZ1bGxfd2lkdGg9RiwgYm9vdHN0cmFwX29wdGlvbnM9Yygic3RyaXBlZCIsICJob3ZlciIsICJjb25kZW5zZWQiKSkKYGBgCgojIyMgU2NhZmZvbGQgTjUwIGlzIGFuIGltcG9ydGFudCBhdHRyaWJ1dGUgZm9yIGFzc2Vzc2luZyBhIGdlbm9tZSBhc3NlbWJseS4gQmVsb3cgd2UgcHJlc2VudCBOWFggZGVmaW5lZCBzaW1pbGFybHkgYXMgTjUwLgoKYGBge3IgZWNobz1GQUxTRX0KdGIgPC0ga2FibGUoYTEwWF9OZGF0YTIsIGFsaWduPSdjJywgImh0bWwiKQprYWJsZV9zdHlsaW5nKHRiLCBib290c3RyYXBfb3B0aW9ucz1jKCJob3ZlciIsICJjb25kZW5zZWQiLCAicmVzcG9uc2l2ZSIpLCBmdWxsX3dpZHRoPVQpCmBgYAoKCkFub3RoZXIgd2F5IHRvIGxvb2sgYXQgdGhlIGNvbnRyaWJ1dGlvbnMgb2YgZGlmZmVyZW50IGxlbmd0aCBvZiBjb250aWdzIHRvIHRoZSB0b3RhbCBnZW5vbWUgc2l6ZSwgdGhlIGZvbGxvd2luZyBwbG90IHByb3ZpZGVzIGEgZ3JhcGhpY2FsIHJlcHJlc2VudGF0aW9uLgoKYGBge3IgdHdvLWNvbHVtbiwgcmVzdWx0cz0nYXNpcycsIGVjaG89RkFMU0UsIG91dC5leHRyYT0nJ30KI2dncGxvdChkMnAsIGFlcyh4PUNvbnRpZ3MsIHk9Q3VtdS5sZW5zKSkgKyBnZW9tX3BvaW50KGFlcyhzaGFwZT0yMSwgZmlsbD0icmVkIiwgY29sb3I9InJlZCIsIHNpemU9MSkpICsgCmNhdCgiPHRhYmxlIGNsYXNzPSdjb250YWluZXInPjx0cj4iKQpjYXQoIjx0ZD4iKQpnZ3Bsb3QoZDJwLCBhZXMoeD1Db250aWdzLCB5PUN1bXUubGVucykpICsgZ2VvbV9wb2ludChjb2xvcj0icmVkIikgKyAKCXNjYWxlX3hfbG9nMTAoKSArIHNjYWxlX3lfbG9nMTAoKSArCglsYWJzKHg9IkNvbnRpZyBsZW5ndGgiLCB5PSJDdW11bGF0aXZlIHNpemUiLCB0aXRsZT0iU0hBU1RBLmsxMCIpICsgdGhlbWVfYncoKSArCgl0aGVtZShsZWdlbmQucG9zaXRpb249J25vbmUnKQpjYXQoIjwvdGQ+IikKY2F0KCI8dGQ+IikKZ2dwbG90KGQycC5ub3ZhLCBhZXMoeD1Db250aWdzLCB5PUN1bXUubGVucykpICsgZ2VvbV9wb2ludChjb2xvcj0icmVkIikgKyAKCXNjYWxlX3hfbG9nMTAoKSArIHNjYWxlX3lfbG9nMTAoKSArCglsYWJzKHg9IkNvbnRpZyBsZW5ndGgiLCB5PSJDdW11bGF0aXZlIHNpemUiLCB0aXRsZT0iU0hBU1RBLmsxMiIpICsgdGhlbWVfYncoKSArCgl0aGVtZShsZWdlbmQucG9zaXRpb249J25vbmUnKQpjYXQoIjwvdGQ+IikKY2F0KCI8dGQ+IikKZ2dwbG90KGQycC5jdXQ4aywgYWVzKHg9Q29udGlncywgeT1DdW11LmxlbnMpKSArIGdlb21fcG9pbnQoY29sb3I9InJlZCIpICsgCglzY2FsZV94X2xvZzEwKCkgKyBzY2FsZV95X2xvZzEwKCkgKwoJbGFicyh4PSJDb250aWcgbGVuZ3RoIiwgeT0iQ3VtdWxhdGl2ZSBzaXplIiwgdGl0bGU9IlNIQVNUQS5rOCIpICsgdGhlbWVfYncoKSArCgl0aGVtZShsZWdlbmQucG9zaXRpb249J25vbmUnKQpjYXQoIjwvdGQ+IikKY2F0KCI8dGQ+IikKZ2dwbG90KGQycC5jdXQ3azhrLCBhZXMoeD1Db250aWdzLCB5PUN1bXUubGVucykpICsgZ2VvbV9wb2ludChjb2xvcj0icmVkIikgKyAKCXNjYWxlX3hfbG9nMTAoKSArIHNjYWxlX3lfbG9nMTAoKSArCglsYWJzKHg9IkNvbnRpZyBsZW5ndGgiLCB5PSJDdW11bGF0aXZlIHNpemUiLCB0aXRsZT0iQ2FudSIpICsgdGhlbWVfYncoKSArCgl0aGVtZShsZWdlbmQucG9zaXRpb249J25vbmUnKQpjYXQoIjwvdGQ+IikKY2F0KCI8L3RyPjwvdGFibGU+IikKCmBgYAoKCmBgYHtyIGVjaG89RkFMU0V9CmxpYnJhcnkoa25pdHIpCmNvbEZtdCA9IGZ1bmN0aW9uKHgsY29sb3IpewogIG91dHB1dEZvcm1hdCA9IG9wdHNfa25pdCRnZXQoInJtYXJrZG93bi5wYW5kb2MudG8iKQogIGlmKG91dHB1dEZvcm1hdCA9PSAnbGF0ZXgnKQogICAgcGFzdGUoIlxcdGV4dGNvbG9yeyIsY29sb3IsIn17Iix4LCJ9IixzZXA9IiIpCiAgZWxzZSBpZihvdXRwdXRGb3JtYXQgPT0gJ2h0bWwnKQogICAgcGFzdGUoIjxmb250IGNvbG9yPSciLGNvbG9yLCInPiIseCwiPC9mb250PiIsc2VwPSIiKQogIGVsc2UKICAgIHgKfQpgYGAKCgo=