IyEvdXNyL2Jpbi9lbnYgcGVybAojCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIyBXcml0dGVuIGJ5IEFuZHkgUG9seWFrb3YgPGFwcHJvQG9wZW5zc2wub3JnPiBmb3IgdGhlIE9wZW5TU0wKIyBwcm9qZWN0LiBUaGUgbW9kdWxlIGlzLCBob3dldmVyLCBkdWFsIGxpY2Vuc2VkIHVuZGVyIE9wZW5TU0wgYW5kCiMgQ1JZUFRPR0FNUyBsaWNlbnNlcyBkZXBlbmRpbmcgb24gd2hlcmUgeW91IG9idGFpbiBpdC4gRm9yIGZ1cnRoZXIKIyBkZXRhaWxzIHNlZSBodHRwOi8vd3d3Lm9wZW5zc2wub3JnL35hcHByby9jcnlwdG9nYW1zLy4KIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojCiMgU0hBMjU2IGJsb2NrIHRyYW5zZm9ybSBmb3IgeDg2LiBTZXB0ZW1iZXIgMjAwNy4KIwojIFBlcmZvcm1hbmNlIGltcHJvdmVtZW50IG92ZXIgY29tcGlsZXIgZ2VuZXJhdGVkIGNvZGUgdmFyaWVzIGZyb20KIyAxMCUgdG8gNDAlIFtzZWUgYmVsb3ddLiBOb3QgdmVyeSBpbXByZXNzaXZlIG9uIHNvbWUgtS1hcmNocywgYnV0CiMgaXQncyA1IHRpbWVzIHNtYWxsZXIgYW5kIG9wdGltaXppZXMgYW1vdW50IG9mIHdyaXRlcy4KIwojIE1heSAyMDEyLgojCiMgT3B0aW1pemF0aW9uIGluY2x1ZGluZyB0d28gb2YgUGF2ZWwgU2VtamFub3YncyBpZGVhcywgYWx0ZXJuYXRpdmUKIyBNYWogYW5kIGZ1bGwgdW5yb2xsLCByZXN1bHRlZCBpbiB+MjAtMjUlIGltcHJvdmVtZW50IG9uIG1vc3QgQ1BVcywKIyB+NyUgb24gUGVudGl1bSwgfjQwJSBvbiBBdG9tLiBBcyBmdWxseSB1bnJvbGxlZCBsb29wIGJvZHkgaXMgYWxtb3N0CiMgMTV4IGxhcmdlciwgOEtCIHZzLiA1NjBCLCBpdCdzIGZpcmVkIG9ubHkgZm9yIGxvbmdlciBpbnB1dHMuIEJ1dCBub3QKIyBvbiBQNCwgd2hlcmUgaXQga2lsbHMgcGVyZm9ybWFuY2UsIG5vciBTYW5keSBCcmlkZ2UsIHdoZXJlIGZvbGRlZAojIGxvb3AgaXMgYXBwcm94aW1hdGVseSBhcyBmYXN0Li4uCiMKIyBKdW5lIDIwMTIuCiMKIyBBZGQgQU1EIFhPUC1zcGVjaWZpYyBjb2RlIHBhdGgsID4zMCUgaW1wcm92ZW1lbnQgb24gQnVsbGRvemVyIG92ZXIKIyBNYXkgdmVyc2lvbiwgPjYwJSBvdmVyIG9yaWdpbmFsLiBBZGQgQVZYK3NocmQgY29kZSBwYXRoLCA+MjUlCiMgaW1wcm92ZW1lbnQgb24gU2FuZHkgQnJpZGdlIG92ZXIgTWF5IHZlcnNpb24sIDYwJSBvdmVyIG9yaWdpbmFsLgojCiMgTWF5IDIwMTMuCiMKIyBSZXBsYWNlIEFNRCBYT1AgY29kZSBwYXRoIHdpdGggU1NTRTMgdG8gY292ZXIgbW9yZSBwcm9jZXNzb3JzLgojIChCaWdnZXN0IGltcHJvdmVtZW50IGNvZWZmaWNpZW50IGlzIG9uIHVwY29taW5nIEF0b20gU2lsdmVybW9udCwKIyBub3Qgc2hvd24uKSBBZGQgQVZYK0JNSSBjb2RlIHBhdGguCiMKIyBNYXJjaCAyMDE0LgojCiMgQWRkIHN1cHBvcnQgZm9yIEludGVsIFNIQSBFeHRlbnNpb25zLgojCiMgUGVyZm9ybWFuY2UgaW4gY2xvY2sgY3ljbGVzIHBlciBwcm9jZXNzZWQgYnl0ZSAobGVzcyBpcyBiZXR0ZXIpOgojCiMJCWdjYwlpY2MJeDg2IGFzbSgqKQlTSU1ECXg4Nl82NCBhc20oKiopCQojIFBlbnRpdW0JNDYJNTcJNDAvMzgJCS0JLQojIFBJSUkJCTM2CTMzCTI3LzI0CQktCS0KIyBQNAkJNDEJMzgJMjgJCS0JMTcuMwojIEFNRCBLOAkyNwkyNQkxOS8xNS41CQktCTE0LjkKIyBDb3JlMgkJMjYJMjMJMTgvMTUuNgkJMTQuMwkxMy44CiMgV2VzdG1lcmUJMjcJLQkxOS8xNS43CQkxMy40CTEyLjMKIyBTYW5keSBCcmlkZ2UJMjUJLQkxNS45CQkxMi40CTExLjYKIyBJdnkgQnJpZGdlCTI0CS0JMTUuMAkJMTEuNAkxMC4zCiMgSGFzd2VsbAkyMgktCTEzLjkJCTkuNDYJNy44MAojIEJ1bGxkb3plcgkzNgktCTI3LzIyCQkxNy4wCTEzLjYKIyBWSUEgTmFubwkzNgktCTI1LzIyCQkxNi44CTE2LjUKIyBBdG9tCQk1MAktCTMwLzI1CQkyMS45CTE4LjkKIwojICgqKQludW1iZXJzIGFmdGVyIHNsYXNoIGFyZSBmb3IgdW5yb2xsZWQgbG9vcCwgd2hlcmUgYXBwbGljYWJsZTsKIyAoKiopCXg4Nl82NCBhc3NlbWJseSBwZXJmb3JtYW5jZSBpcyBwcmVzZW50ZWQgZm9yIHJlZmVyZW5jZQojCXB1cnBvc2VzLCByZXN1bHRzIGFyZSBiZXN0LWF2YWlsYWJsZTsKCiQwID1+IG0vKC4qW1wvXFxdKVteXC9cXF0rJC87ICRkaXI9JDE7CnB1c2goQElOQywiJHtkaXJ9IiwiJHtkaXJ9Li4vLi4vcGVybGFzbSIpOwpyZXF1aXJlICJ4ODZhc20ucGwiOwoKJmFzbV9pbml0KCRBUkdWWzBdLCJzaGE1MTItNTg2LnBsIiwkQVJHVlskI0FSR1ZdIGVxICIzODYiKTsKCiR4bW09JGF2eD0wOwpmb3IgKEBBUkdWKSB7ICR4bW09MSBpZiAoLy1ET1BFTlNTTF9JQTMyX1NTRTIvKTsgfQoKaWYgKCR4bW0gJiYJYCRFTlZ7Q0N9IC1XYSwtdiAtYyAtbyAvZGV2L251bGwgLXggYXNzZW1ibGVyIC9kZXYvbnVsbCAyPiYxYAoJCQk9fiAvR05VIGFzc2VtYmxlciB2ZXJzaW9uIChbMi05XVwuWzAtOV0rKS8pIHsKCSRhdnggPSAoJDE+PTIuMTkpICsgKCQxPj0yLjIyKTsKfQoKaWYgKCR4bW0gJiYgISRhdnggJiYgJEFSR1ZbMF0gZXEgIndpbjMybiIgJiYKCQlgbmFzbSAtdiAyPiYxYCA9fiAvTkFTTSB2ZXJzaW9uIChbMi05XVwuWzAtOV0rKS8pIHsKCSRhdnggPSAoJDE+PTIuMDMpICsgKCQxPj0yLjEwKTsKfQoKaWYgKCR4bW0gJiYgISRhdnggJiYgJEFSR1ZbMF0gZXEgIndpbjMyIiAmJgoJCWBtbCAyPiYxYCA9fiAvVmVyc2lvbiAoWzAtOV0rKVwuLykgewoJJGF2eCA9ICgkMT49MTApICsgKCQxPj0xMSk7Cn0KCiRzaGFleHQ9JHhtbTsJIyMjIHNldCB0byB6ZXJvIGlmIGNvbXBpbGluZyBmb3IgMS4wLjEKCiR1bnJvbGxfYWZ0ZXIgPSA2NCo0OwkjIElmIHByZS1ldmljdGVkIGZyb20gTDFQIGNhY2hlIGZpcnN0IHNwaW4gb2YKCQkJIyBmdWxseSB1bnJvbGxlZCBsb29wIHdhcyBtZWFzdXJlZCB0byBydW4gYWJvdXQKCQkJIyAzLTR4IHNsb3dlci4gSWYgc2xvd2Rvd24gY29lZmZpY2llbnQgaXMgTiBhbmQKCQkJIyB1bnJvbGxlZCBsb29wIGlzIG0gdGltZXMgZmFzdGVyLCB0aGVuIHlvdSBicmVhawoJCQkjIGV2ZW4gYXQgKE4tMSkvKG0tMSkgYmxvY2tzLiBUaGVuIGl0IG5lZWRzIHRvIGJlCgkJCSMgYWRqdXN0ZWQgZm9yIHByb2JhYmlsaXR5IG9mIGNvZGUgYmVpbmcgZXZpY3RlZCwKCQkJIyBjb2RlIHNpemUvY2FjaGUgc2l6ZT0xLzQuIFR5cGljYWwgbSBpcyAxLjE1Li4uCgokQT0iZWF4IjsKJEU9ImVkeCI7CiRUPSJlYngiOwokQW9mZj0mRFdQKDQsImVzcCIpOwokQm9mZj0mRFdQKDgsImVzcCIpOwokQ29mZj0mRFdQKDEyLCJlc3AiKTsKJERvZmY9JkRXUCgxNiwiZXNwIik7CiRFb2ZmPSZEV1AoMjAsImVzcCIpOwokRm9mZj0mRFdQKDI0LCJlc3AiKTsKJEdvZmY9JkRXUCgyOCwiZXNwIik7CiRIb2ZmPSZEV1AoMzIsImVzcCIpOwokWG9mZj0mRFdQKDM2LCJlc3AiKTsKJEsyNTY9ImVicCI7CgpzdWIgQk9EWV8xNl82MygpIHsKCSZtb3YJKCRULCJlY3giKTsJCQkjICJlY3giIGlzIHByZWxvYWRlZAoJICZtb3YJKCJlc2kiLCZEV1AoNCooOSsxNSsxNi0xNCksImVzcCIpKTsKCSZyb3IJKCJlY3giLDE4LTcpOwoJICZtb3YJKCJlZGkiLCJlc2kiKTsKCSZyb3IJKCJlc2kiLDE5LTE3KTsKCSAmeG9yCSgiZWN4IiwkVCk7CgkgJnNocgkoJFQsMyk7Cgkmcm9yCSgiZWN4Iiw3KTsKCSAmeG9yCSgiZXNpIiwiZWRpIik7CgkgJnhvcgkoJFQsImVjeCIpOwkJCSMgVCA9IHNpZ21hMChYWy0xNV0pCgkmcm9yCSgiZXNpIiwxNyk7CgkgJmFkZAkoJFQsJkRXUCg0Kig5KzE1KzE2KSwiZXNwIikpOwkjIFQgKz0gWFstMTZdCgkmc2hyCSgiZWRpIiwxMCk7CgkgJmFkZAkoJFQsJkRXUCg0Kig5KzE1KzE2LTkpLCJlc3AiKSk7CSMgVCArPSBYWy03XQoJIyZ4b3IJKCJlZGkiLCJlc2kiKQkJCSMgc2lnbWExKFhbLTJdKQoJIyAmYWRkCSgkVCwiZWRpIik7CQkJIyBUICs9IHNpZ21hMShYWy0yXSkKCSMgJm1vdgkoJkRXUCg0Kig5KzE1KSwiZXNwIiksJFQpOwkjIHNhdmUgWFswXQoKCSZCT0RZXzAwXzE1KDEpOwp9CnN1YiBCT0RZXzAwXzE1KCkgewogICAgbXkgJGluXzE2XzYzPXNoaWZ0OwoKCSZtb3YJKCJlY3giLCRFKTsKCSAmeG9yCSgiZWRpIiwiZXNpIikJCQlpZiAoJGluXzE2XzYzKTsJIyBzaWdtYTEoWFstMl0pCgkgJm1vdgkoImVzaSIsJEZvZmYpOwoJJnJvcgkoImVjeCIsMjUtMTEpOwoJICZhZGQJKCRULCJlZGkiKQkJCWlmICgkaW5fMTZfNjMpOwkjIFQgKz0gc2lnbWExKFhbLTJdKQoJICZtb3YJKCJlZGkiLCRHb2ZmKTsKCSZ4b3IJKCJlY3giLCRFKTsKCSAmeG9yCSgiZXNpIiwiZWRpIik7CgkgJm1vdgkoJFQsJkRXUCg0Kig5KzE1KSwiZXNwIikpCWlmICghJGluXzE2XzYzKTsKCSAmbW92CSgmRFdQKDQqKDkrMTUpLCJlc3AiKSwkVCkJaWYgKCRpbl8xNl82Myk7CSMgc2F2ZSBYWzBdCgkmcm9yCSgiZWN4IiwxMS02KTsKCSAmYW5kCSgiZXNpIiwkRSk7CgkgJm1vdgkoJEVvZmYsJEUpOwkJIyBtb2R1bG8tc2NoZWR1bGVkCgkmeG9yCSgkRSwiZWN4Iik7CgkgJmFkZAkoJFQsJEhvZmYpOwkJIyBUICs9IGgKCSAmeG9yCSgiZXNpIiwiZWRpIik7CQkjIENoKGUsZixnKQoJJnJvcgkoJEUsNik7CQkJIyBTaWdtYTEoZSkKCSAmbW92CSgiZWN4IiwkQSk7CgkgJmFkZAkoJFQsImVzaSIpOwkJIyBUICs9IENoKGUsZixnKQoKCSZyb3IJKCJlY3giLDIyLTEzKTsKCSAmYWRkCSgkVCwkRSk7CQkjIFQgKz0gU2lnbWExKGUpCgkgJm1vdgkoImVkaSIsJEJvZmYpOwoJJnhvcgkoImVjeCIsJEEpOwoJICZtb3YJKCRBb2ZmLCRBKTsJCSMgbW9kdWxvLXNjaGVkdWxlZAoJICZsZWEJKCJlc3AiLCZEV1AoLTQsImVzcCIpKTsKCSZyb3IJKCJlY3giLDEzLTIpOwoJICZtb3YJKCJlc2kiLCZEV1AoMCwkSzI1NikpOwoJJnhvcgkoImVjeCIsJEEpOwoJICZtb3YJKCRFLCRFb2ZmKTsJCSMgZSBpbiBuZXh0IGl0ZXJhdGlvbiwgZCBpbiB0aGlzIG9uZQoJICZ4b3IJKCRBLCJlZGkiKTsJCSMgYSBePSBiCgkmcm9yCSgiZWN4IiwyKTsJCSMgU2lnbWEwKGEpCgoJICZhZGQJKCRULCJlc2kiKTsJCSMgVCs9IEtbaV0KCSAmbW92CSgmRFdQKDAsImVzcCIpLCRBKTsJIyAoYl5jKSBpbiBuZXh0IHJvdW5kCgkmYWRkCSgkRSwkVCk7CQkjIGQgKz0gVAoJICZhbmQJKCRBLCZEV1AoNCwiZXNwIikpOwkjIGEgJj0gKGJeYykKCSZhZGQJKCRULCJlY3giKTsJCSMgVCArPSBTaWdtYTAoYSkKCSAmeG9yCSgkQSwiZWRpIik7CQkjIGggPSBNYWooYSxiLGMpID0gQ2goYV5iLGMsYikKCSAmbW92CSgiZWN4IiwmRFdQKDQqKDkrMTUrMTYtMSksImVzcCIpKQlpZiAoJGluXzE2XzYzKTsJIyBwcmVsb2FkIFQKCSZhZGQJKCRLMjU2LDQpOwoJICZhZGQJKCRBLCRUKTsJCSMgaCArPSBUCn0KCiZleHRlcm5hbF9sYWJlbCgiT1BFTlNTTF9pYTMyY2FwX1AiKQkJaWYgKCEkaTM4Nik7CgomZnVuY3Rpb25fYmVnaW4oInNoYTI1Nl9ibG9ja19kYXRhX29yZGVyIik7CgkmbW92CSgiZXNpIix3cGFyYW0oMCkpOwkjIGN0eAoJJm1vdgkoImVkaSIsd3BhcmFtKDEpKTsJIyBpbnAKCSZtb3YJKCJlYXgiLHdwYXJhbSgyKSk7CSMgbnVtCgkmbW92CSgiZWJ4IiwiZXNwIik7CQkjIHNhdmVkIHNwCgoJJmNhbGwJKCZsYWJlbCgicGljX3BvaW50IikpOwkjIG1ha2UgaXQgUElDIQomc2V0X2xhYmVsKCJwaWNfcG9pbnQiKTsKCSZibGluZHBvcCgkSzI1Nik7CgkmbGVhCSgkSzI1NiwmRFdQKCZsYWJlbCgiSzI1NiIpLiItIi4mbGFiZWwoInBpY19wb2ludCIpLCRLMjU2KSk7CgoJJnN1YgkoImVzcCIsMTYpOwoJJmFuZAkoImVzcCIsLTY0KTsKCgkmc2hsCSgiZWF4Iiw2KTsKCSZhZGQJKCJlYXgiLCJlZGkiKTsKCSZtb3YJKCZEV1AoMCwiZXNwIiksImVzaSIpOwkjIGN0eAoJJm1vdgkoJkRXUCg0LCJlc3AiKSwiZWRpIik7CSMgaW5wCgkmbW92CSgmRFdQKDgsImVzcCIpLCJlYXgiKTsJIyBpbnArbnVtKjEyOAoJJm1vdgkoJkRXUCgxMiwiZXNwIiksImVieCIpOwkjIHNhdmVkIHNwCgkJCQkJCWlmICghJGkzODYgJiYgJHhtbSkgewoJJnBpY21ldXAoImVkeCIsIk9QRU5TU0xfaWEzMmNhcF9QIiwkSzI1NiwmbGFiZWwoIksyNTYiKSk7CgkmbW92CSgiZWN4IiwmRFdQKDAsImVkeCIpKTsKCSZtb3YJKCJlYngiLCZEV1AoNCwiZWR4IikpOwoJJnRlc3QJKCJlY3giLDE8PDIwKTsJCSMgY2hlY2sgZm9yIFA0Cgkmam56CSgmbGFiZWwoImxvb3AiKSk7CgkmbW92CSgiZWR4IiwmRFdQKDgsImVkeCIpKQlpZiAoJHhtbSk7CgkmdGVzdAkoImVjeCIsMTw8MjQpOwkJIyBjaGVjayBmb3IgRlhTUgoJJmp6CSgkdW5yb2xsX2FmdGVyPyZsYWJlbCgibm9feG1tIik6JmxhYmVsKCJsb29wIikpOwoJJmFuZAkoImVjeCIsMTw8MzApOwkJIyBtYXNrICJJbnRlbCBDUFUiIGJpdAoJJmFuZAkoImVieCIsMTw8Mjh8MTw8OSk7CSMgbWFzayBBVlggYW5kIFNTU0UzIGJpdHMKCSZ0ZXN0CSgiZWR4IiwxPDwyOSkJCWlmICgkc2hhZXh0KTsJIyBjaGVjayBmb3IgU0hBCgkmam56CSgmbGFiZWwoInNoYWV4dCIpKQlpZiAoJHNoYWV4dCk7Cgkmb3IJKCJlY3giLCJlYngiKTsKCSZhbmQJKCJlY3giLDE8PDI4fDE8PDMwKTsKCSZjbXAJKCJlY3giLDE8PDI4fDE8PDMwKTsKCQkJCQlpZiAoJHhtbSkgewoJJmplCSgmbGFiZWwoIkFWWCIpKQkJaWYgKCRhdngpOwoJJnRlc3QJKCJlYngiLDE8PDkpOwkJIyBjaGVjayBmb3IgU1NTRTMKCSZqbnoJKCZsYWJlbCgiU1NTRTMiKSk7CgkJCQkJfSBlbHNlIHsKCSZqZQkoJmxhYmVsKCJsb29wX3NocmQiKSk7CgkJCQkJfQoJCQkJCQlpZiAoJHVucm9sbF9hZnRlcikgewomc2V0X2xhYmVsKCJub194bW0iKTsKCSZzdWIJKCJlYXgiLCJlZGkiKTsKCSZjbXAJKCJlYXgiLCR1bnJvbGxfYWZ0ZXIpOwoJJmphZQkoJmxhYmVsKCJ1bnJvbGxlZCIpKTsKCQkJCQkJfSB9Cgkmam1wCSgmbGFiZWwoImxvb3AiKSk7CgpzdWIgQ09NUEFDVF9MT09QKCkgewpteSAkc3VmZml4PXNoaWZ0OwoKJnNldF9sYWJlbCgibG9vcCRzdWZmaXgiLCRzdWZmaXg/MzI6MTYpOwogICAgIyBjb3B5IGlucHV0IGJsb2NrIHRvIHN0YWNrIHJldmVyc2luZyBieXRlIGFuZCBkd29yZCBvcmRlcgogICAgZm9yKCRpPTA7JGk8NDskaSsrKSB7CgkmbW92CSgiZWF4IiwmRFdQKCRpKjE2KzAsImVkaSIpKTsKCSZtb3YJKCJlYngiLCZEV1AoJGkqMTYrNCwiZWRpIikpOwoJJm1vdgkoImVjeCIsJkRXUCgkaSoxNis4LCJlZGkiKSk7CgkmYnN3YXAJKCJlYXgiKTsKCSZtb3YJKCJlZHgiLCZEV1AoJGkqMTYrMTIsImVkaSIpKTsKCSZic3dhcAkoImVieCIpOwoJJnB1c2gJKCJlYXgiKTsKCSZic3dhcAkoImVjeCIpOwoJJnB1c2gJKCJlYngiKTsKCSZic3dhcAkoImVkeCIpOwoJJnB1c2gJKCJlY3giKTsKCSZwdXNoCSgiZWR4Iik7CiAgICB9CgkmYWRkCSgiZWRpIiw2NCk7CgkmbGVhCSgiZXNwIiwmRFdQKC00KjksImVzcCIpKTsjIHBsYWNlIGZvciBBLEIsQyxELEUsRixHLEgKCSZtb3YJKCZEV1AoNCooOSsxNikrNCwiZXNwIiksImVkaSIpOwoKCSMgY29weSBjdHgtPmhbMC03XSB0byBBLEIsQyxELEUsRixHLEggb24gc3RhY2sKCSZtb3YJKCRBLCZEV1AoMCwiZXNpIikpOwoJJm1vdgkoImVieCIsJkRXUCg0LCJlc2kiKSk7CgkmbW92CSgiZWN4IiwmRFdQKDgsImVzaSIpKTsKCSZtb3YJKCJlZGkiLCZEV1AoMTIsImVzaSIpKTsKCSMgJm1vdgkoJEFvZmYsJEEpOwoJJm1vdgkoJEJvZmYsImVieCIpOwoJJnhvcgkoImVieCIsImVjeCIpOwoJJm1vdgkoJENvZmYsImVjeCIpOwoJJm1vdgkoJERvZmYsImVkaSIpOwoJJm1vdgkoJkRXUCgwLCJlc3AiKSwiZWJ4Iik7CSMgbWFnaWMKCSZtb3YJKCRFLCZEV1AoMTYsImVzaSIpKTsJCgkmbW92CSgiZWJ4IiwmRFdQKDIwLCJlc2kiKSk7CgkmbW92CSgiZWN4IiwmRFdQKDI0LCJlc2kiKSk7CgkmbW92CSgiZWRpIiwmRFdQKDI4LCJlc2kiKSk7CgkjICZtb3YJKCRFb2ZmLCRFKTsKCSZtb3YJKCRGb2ZmLCJlYngiKTsKCSZtb3YJKCRHb2ZmLCJlY3giKTsKCSZtb3YJKCRIb2ZmLCJlZGkiKTsKCiZzZXRfbGFiZWwoIjAwXzE1JHN1ZmZpeCIsMTYpOwoKCSZCT0RZXzAwXzE1KCk7CgoJJmNtcAkoImVzaSIsMHhjMTliZjE3NCk7Cgkmam5lCSgmbGFiZWwoIjAwXzE1JHN1ZmZpeCIpKTsKCgkmbW92CSgiZWN4IiwmRFdQKDQqKDkrMTUrMTYtMSksImVzcCIpKTsJIyBwcmVsb2FkZWQgaW4gQk9EWV8wMF8xNSgxKQoJJmptcAkoJmxhYmVsKCIxNl82MyRzdWZmaXgiKSk7Cgomc2V0X2xhYmVsKCIxNl82MyRzdWZmaXgiLDE2KTsKCgkmQk9EWV8xNl82MygpOwoKCSZjbXAJKCJlc2kiLDB4YzY3MTc4ZjIpOwoJJmpuZQkoJmxhYmVsKCIxNl82MyRzdWZmaXgiKSk7CgoJJm1vdgkoImVzaSIsJkRXUCg0Kig5KzE2KzY0KSswLCJlc3AiKSk7I2N0eAoJIyAmbW92CSgkQSwkQW9mZik7CgkmbW92CSgiZWJ4IiwkQm9mZik7CgkjICZtb3YJKCJlZGkiLCRDb2ZmKTsKCSZtb3YJKCJlY3giLCREb2ZmKTsKCSZhZGQJKCRBLCZEV1AoMCwiZXNpIikpOwoJJmFkZAkoImVieCIsJkRXUCg0LCJlc2kiKSk7CgkmYWRkCSgiZWRpIiwmRFdQKDgsImVzaSIpKTsKCSZhZGQJKCJlY3giLCZEV1AoMTIsImVzaSIpKTsKCSZtb3YJKCZEV1AoMCwiZXNpIiksJEEpOwoJJm1vdgkoJkRXUCg0LCJlc2kiKSwiZWJ4Iik7CgkmbW92CSgmRFdQKDgsImVzaSIpLCJlZGkiKTsKCSZtb3YJKCZEV1AoMTIsImVzaSIpLCJlY3giKTsKCSMgJm1vdgkoJEUsJEVvZmYpOwoJJm1vdgkoImVheCIsJEZvZmYpOwoJJm1vdgkoImVieCIsJEdvZmYpOwoJJm1vdgkoImVjeCIsJEhvZmYpOwoJJm1vdgkoImVkaSIsJkRXUCg0Kig5KzE2KzY0KSs0LCJlc3AiKSk7I2lucAoJJmFkZAkoJEUsJkRXUCgxNiwiZXNpIikpOwoJJmFkZAkoImVheCIsJkRXUCgyMCwiZXNpIikpOwoJJmFkZAkoImVieCIsJkRXUCgyNCwiZXNpIikpOwoJJmFkZAkoImVjeCIsJkRXUCgyOCwiZXNpIikpOwoJJm1vdgkoJkRXUCgxNiwiZXNpIiksJEUpOwoJJm1vdgkoJkRXUCgyMCwiZXNpIiksImVheCIpOwoJJm1vdgkoJkRXUCgyNCwiZXNpIiksImVieCIpOwoJJm1vdgkoJkRXUCgyOCwiZXNpIiksImVjeCIpOwoKCSZsZWEJKCJlc3AiLCZEV1AoNCooOSsxNis2NCksImVzcCIpKTsjIGRlc3Ryb3kgZnJhbWUKCSZzdWIJKCRLMjU2LDQqNjQpOwkJCSMgcmV3aW5kIEsKCgkmY21wCSgiZWRpIiwmRFdQKDgsImVzcCIpKTsJCSMgYXJlIHdlIGRvbmUgeWV0PwoJJmpiCSgmbGFiZWwoImxvb3Akc3VmZml4IikpOwp9CgkmQ09NUEFDVF9MT09QKCk7CgkmbW92CSgiZXNwIiwmRFdQKDEyLCJlc3AiKSk7CQkjIHJlc3RvcmUgc3AKJmZ1bmN0aW9uX2VuZF9BKCk7CgkJCQkJCWlmICghJGkzODYgJiYgISR4bW0pIHsKCSMgfjIwJSBpbXByb3ZlbWVudCBvbiBTYW5keSBCcmlkZ2UKCWxvY2FsICpyb3IgPSBzdWIgeyAmc2hyZChAX1swXSxAXykgfTsKCSZDT01QQUNUX0xPT1AoIl9zaHJkIik7CgkmbW92CSgiZXNwIiwmRFdQKDEyLCJlc3AiKSk7CQkjIHJlc3RvcmUgc3AKJmZ1bmN0aW9uX2VuZF9BKCk7CgkJCQkJCX0KCiZzZXRfbGFiZWwoIksyNTYiLDY0KTsJIyBZZXMhIEkga2VlcCBpdCBpbiB0aGUgY29kZSBzZWdtZW50IQpASzI1Nj0oCTB4NDI4YTJmOTgsMHg3MTM3NDQ5MSwweGI1YzBmYmNmLDB4ZTliNWRiYTUsCgkweDM5NTZjMjViLDB4NTlmMTExZjEsMHg5MjNmODJhNCwweGFiMWM1ZWQ1LAoJMHhkODA3YWE5OCwweDEyODM1YjAxLDB4MjQzMTg1YmUsMHg1NTBjN2RjMywKCTB4NzJiZTVkNzQsMHg4MGRlYjFmZSwweDliZGMwNmE3LDB4YzE5YmYxNzQsCgkweGU0OWI2OWMxLDB4ZWZiZTQ3ODYsMHgwZmMxOWRjNiwweDI0MGNhMWNjLAoJMHgyZGU5MmM2ZiwweDRhNzQ4NGFhLDB4NWNiMGE5ZGMsMHg3NmY5ODhkYSwKCTB4OTgzZTUxNTIsMHhhODMxYzY2ZCwweGIwMDMyN2M4LDB4YmY1OTdmYzcsCgkweGM2ZTAwYmYzLDB4ZDVhNzkxNDcsMHgwNmNhNjM1MSwweDE0MjkyOTY3LAoJMHgyN2I3MGE4NSwweDJlMWIyMTM4LDB4NGQyYzZkZmMsMHg1MzM4MGQxMywKCTB4NjUwYTczNTQsMHg3NjZhMGFiYiwweDgxYzJjOTJlLDB4OTI3MjJjODUsCgkweGEyYmZlOGExLDB4YTgxYTY2NGIsMHhjMjRiOGI3MCwweGM3NmM1MWEzLAoJMHhkMTkyZTgxOSwweGQ2OTkwNjI0LDB4ZjQwZTM1ODUsMHgxMDZhYTA3MCwKCTB4MTlhNGMxMTYsMHgxZTM3NmMwOCwweDI3NDg3NzRjLDB4MzRiMGJjYjUsCgkweDM5MWMwY2IzLDB4NGVkOGFhNGEsMHg1YjljY2E0ZiwweDY4MmU2ZmYzLAoJMHg3NDhmODJlZSwweDc4YTU2MzZmLDB4ODRjODc4MTQsMHg4Y2M3MDIwOCwKCTB4OTBiZWZmZmEsMHhhNDUwNmNlYiwweGJlZjlhM2Y3LDB4YzY3MTc4ZjIJKTsKJmRhdGFfd29yZChASzI1Nik7CiZkYXRhX3dvcmQoMHgwMDAxMDIwMywweDA0MDUwNjA3LDB4MDgwOTBhMGIsMHgwYzBkMGUwZik7CSMgYnl0ZSBzd2FwIG1hc2sKJmFzY2l6KCJTSEEyNTYgYmxvY2sgdHJhbnNmb3JtIGZvciB4ODYsIENSWVBUT0dBTVMgYnkgPGFwcHJvXEBvcGVuc3NsLm9yZz4iKTsKCigkYSwkYiwkYywkZCwkZSwkZiwkZywkaCk9KDAuLjcpOwkjIG9mZnNldHMKc3ViIG9mZiB7ICZEV1AoNCooKChzaGlmdCktJGkpJjcpLCJlc3AiKTsgfQoKaWYgKCEkaTM4NiAmJiAkdW5yb2xsX2FmdGVyKSB7Cm15IEBBSD0oJEEsJEsyNTYpOwoKJnNldF9sYWJlbCgidW5yb2xsZWQiLDE2KTsKCSZsZWEJKCJlc3AiLCZEV1AoLTk2LCJlc3AiKSk7CgkjIGNvcHkgY3R4LT5oWzAtN10gdG8gQSxCLEMsRCxFLEYsRyxIIG9uIHN0YWNrCgkmbW92CSgkQUhbMF0sJkRXUCgwLCJlc2kiKSk7CgkmbW92CSgkQUhbMV0sJkRXUCg0LCJlc2kiKSk7CgkmbW92CSgiZWN4IiwmRFdQKDgsImVzaSIpKTsKCSZtb3YJKCJlYngiLCZEV1AoMTIsImVzaSIpKTsKCSMmbW92CSgmRFdQKDAsImVzcCIpLCRBSFswXSk7CgkmbW92CSgmRFdQKDQsImVzcCIpLCRBSFsxXSk7CgkmeG9yCSgkQUhbMV0sImVjeCIpOwkJIyBtYWdpYwoJJm1vdgkoJkRXUCg4LCJlc3AiKSwiZWN4Iik7CgkmbW92CSgmRFdQKDEyLCJlc3AiKSwiZWJ4Iik7CgkmbW92CSgkRSwmRFdQKDE2LCJlc2kiKSk7CQoJJm1vdgkoImVieCIsJkRXUCgyMCwiZXNpIikpOwoJJm1vdgkoImVjeCIsJkRXUCgyNCwiZXNpIikpOwoJJm1vdgkoImVzaSIsJkRXUCgyOCwiZXNpIikpOwoJIyZtb3YJKCZEV1AoMTYsImVzcCIpLCRFKTsKCSZtb3YJKCZEV1AoMjAsImVzcCIpLCJlYngiKTsKCSZtb3YJKCZEV1AoMjQsImVzcCIpLCJlY3giKTsKCSZtb3YJKCZEV1AoMjgsImVzcCIpLCJlc2kiKTsKCSZqbXAJKCZsYWJlbCgiZ3JhbmRfbG9vcCIpKTsKCiZzZXRfbGFiZWwoImdyYW5kX2xvb3AiLDE2KTsKICAgICMgY29weSBpbnB1dCBibG9jayB0byBzdGFjayByZXZlcnNpbmcgYnl0ZSBvcmRlcgogICAgZm9yKCRpPTA7JGk8NTskaSsrKSB7CgkmbW92CSgiZWJ4IiwmRFdQKDEyKiRpKzAsImVkaSIpKTsKCSZtb3YJKCJlY3giLCZEV1AoMTIqJGkrNCwiZWRpIikpOwoJJmJzd2FwCSgiZWJ4Iik7CgkmbW92CSgiZXNpIiwmRFdQKDEyKiRpKzgsImVkaSIpKTsKCSZic3dhcAkoImVjeCIpOwoJJm1vdgkoJkRXUCgzMisxMiokaSswLCJlc3AiKSwiZWJ4Iik7CgkmYnN3YXAJKCJlc2kiKTsKCSZtb3YJKCZEV1AoMzIrMTIqJGkrNCwiZXNwIiksImVjeCIpOwoJJm1vdgkoJkRXUCgzMisxMiokaSs4LCJlc3AiKSwiZXNpIik7CiAgICB9CgkmbW92CSgiZWJ4IiwmRFdQKCRpKjEyLCJlZGkiKSk7CgkmYWRkCSgiZWRpIiw2NCk7CgkmYnN3YXAJKCJlYngiKTsKCSZtb3YJKCZEV1AoOTYrNCwiZXNwIiksImVkaSIpOwoJJm1vdgkoJkRXUCgzMisxMiokaSwiZXNwIiksImVieCIpOwoKICAgIG15ICgkdDEsJHQyKSA9ICgiZWN4IiwiZXNpIik7CgogICAgZm9yICgkaT0wOyRpPDY0OyRpKyspIHsKCiAgICAgIGlmICgkaT49MTYpIHsKCSZtb3YJKCRULCR0MSk7CQkJIyAkdDEgaXMgcHJlbG9hZGVkCgkjICZtb3YJKCR0MiwmRFdQKDMyKzQqKCgkaSsxNCkmMTUpLCJlc3AiKSk7Cgkmcm9yCSgkdDEsMTgtNyk7CgkgJm1vdgkoImVkaSIsJHQyKTsKCSZyb3IJKCR0MiwxOS0xNyk7CgkgJnhvcgkoJHQxLCRUKTsKCSAmc2hyCSgkVCwzKTsKCSZyb3IJKCR0MSw3KTsKCSAmeG9yCSgkdDIsImVkaSIpOwoJICZ4b3IJKCRULCR0MSk7CQkJIyBUID0gc2lnbWEwKFhbLTE1XSkKCSZyb3IJKCR0MiwxNyk7CgkgJmFkZAkoJFQsJkRXUCgzMis0KigkaSYxNSksImVzcCIpKTsJIyBUICs9IFhbLTE2XQoJJnNocgkoImVkaSIsMTApOwoJICZhZGQJKCRULCZEV1AoMzIrNCooKCRpKzkpJjE1KSwiZXNwIikpOwkjIFQgKz0gWFstN10KCSMmeG9yCSgiZWRpIiwkdDIpCQkJIyBzaWdtYTEoWFstMl0pCgkjICZhZGQJKCRULCJlZGkiKTsJCQkjIFQgKz0gc2lnbWExKFhbLTJdKQoJIyAmbW92CSgmRFdQKDQqKDkrMTUpLCJlc3AiKSwkVCk7CSMgc2F2ZSBYWzBdCiAgICAgIH0KCSZtb3YJKCR0MSwkRSk7CgkgJnhvcgkoImVkaSIsJHQyKQkJCWlmICgkaT49MTYpOwkjIHNpZ21hMShYWy0yXSkKCSAmbW92CSgkdDIsJm9mZigkZikpOwoJJnJvcgkoJEUsMjUtMTEpOwoJICZhZGQJKCRULCJlZGkiKQkJCWlmICgkaT49MTYpOwkjIFQgKz0gc2lnbWExKFhbLTJdKQoJICZtb3YJKCJlZGkiLCZvZmYoJGcpKTsKCSZ4b3IJKCRFLCR0MSk7CgkgJm1vdgkoJFQsJkRXUCgzMis0KigkaSYxNSksImVzcCIpKQlpZiAoJGk8MTYpOwkjIFhbaV0KCSAmbW92CSgmRFdQKDMyKzQqKCRpJjE1KSwiZXNwIiksJFQpCWlmICgkaT49MTYgJiYgJGk8NjIpOwkjIHNhdmUgWFswXQoJICZ4b3IJKCR0MiwiZWRpIik7Cgkmcm9yCSgkRSwxMS02KTsKCSAmYW5kCSgkdDIsJHQxKTsKCSAmbW92CSgmb2ZmKCRlKSwkdDEpOwkJIyBzYXZlICRFLCBtb2R1bG8tc2NoZWR1bGVkCgkmeG9yCSgkRSwkdDEpOwoJICZhZGQJKCRULCZvZmYoJGgpKTsJCSMgVCArPSBoCgkgJnhvcgkoImVkaSIsJHQyKTsJCSMgQ2goZSxmLGcpCgkmcm9yCSgkRSw2KTsJCQkjIFNpZ21hMShlKQoJICZtb3YJKCR0MSwkQUhbMF0pOwoJICZhZGQJKCRULCJlZGkiKTsJCSMgVCArPSBDaChlLGYsZykKCgkmcm9yCSgkdDEsMjItMTMpOwoJICZtb3YJKCR0MiwkQUhbMF0pOwoJICZtb3YJKCJlZGkiLCZvZmYoJGIpKTsKCSZ4b3IJKCR0MSwkQUhbMF0pOwoJICZtb3YJKCZvZmYoJGEpLCRBSFswXSk7CSMgc2F2ZSAkQSwgbW9kdWxvLXNjaGVkdWxlZAoJICZ4b3IJKCRBSFswXSwiZWRpIik7CQkjIGEgXj0gYiwgKGJeYykgaW4gbmV4dCByb3VuZAoJJnJvcgkoJHQxLDEzLTIpOwoJICZhbmQJKCRBSFsxXSwkQUhbMF0pOwkjIChiXmMpICY9IChhXmIpCgkgJmxlYQkoJEUsJkRXUChASzI1NlskaV0sJFQsJEUpKTsJIyBUICs9IFNpZ21hMSgxKStLW2ldCgkmeG9yCSgkdDEsJHQyKTsKCSAmeG9yCSgkQUhbMV0sImVkaSIpOwkJIyBoID0gTWFqKGEsYixjKSA9IENoKGFeYixjLGIpCgkgJm1vdgkoJHQyLCZEV1AoMzIrNCooKCRpKzIpJjE1KSwiZXNwIikpCWlmICgkaT49MTUgJiYgJGk8NjMpOwoJJnJvcgkoJHQxLDIpOwkJIyBTaWdtYTAoYSkKCgkgJmFkZAkoJEFIWzFdLCRFKTsJCSMgaCArPSBUCgkgJmFkZAkoJEUsJm9mZigkZCkpOwkJIyBkICs9IFQKCSZhZGQJKCRBSFsxXSwkdDEpOwkJIyBoICs9IFNpZ21hMChhKQoJICZtb3YJKCR0MSwmRFdQKDMyKzQqKCgkaSsxNSkmMTUpLCJlc3AiKSkJaWYgKCRpPj0xNSAmJiAkaTw2Myk7CgoJQEFIID0gcmV2ZXJzZShAQUgpOwkJIyByb3RhdGUoYSxoKQoJKCR0MSwkdDIpID0gKCR0MiwkdDEpOwkJIyByb3RhdGUodDEsdDIpCiAgICB9CgkmbW92CSgiZXNpIiwmRFdQKDk2LCJlc3AiKSk7CSNjdHgKCQkJCQkjJm1vdgkoJEFIWzBdLCZEV1AoMCwiZXNwIikpOwoJJnhvcgkoJEFIWzFdLCJlZGkiKTsJCSMmbW92CSgkQUhbMV0sJkRXUCg0LCJlc3AiKSk7CgkJCQkJIyZtb3YJKCJlZGkiLCAmRFdQKDgsImVzcCIpKTsKCSZtb3YJKCJlY3giLCZEV1AoMTIsImVzcCIpKTsKCSZhZGQJKCRBSFswXSwmRFdQKDAsImVzaSIpKTsKCSZhZGQJKCRBSFsxXSwmRFdQKDQsImVzaSIpKTsKCSZhZGQJKCJlZGkiLCZEV1AoOCwiZXNpIikpOwoJJmFkZAkoImVjeCIsJkRXUCgxMiwiZXNpIikpOwoJJm1vdgkoJkRXUCgwLCJlc2kiKSwkQUhbMF0pOwoJJm1vdgkoJkRXUCg0LCJlc2kiKSwkQUhbMV0pOwoJJm1vdgkoJkRXUCg4LCJlc2kiKSwiZWRpIik7CgkmbW92CSgmRFdQKDEyLCJlc2kiKSwiZWN4Iik7CgkgIyZtb3YJKCZEV1AoMCwiZXNwIiksJEFIWzBdKTsKCSAmbW92CSgmRFdQKDQsImVzcCIpLCRBSFsxXSk7CgkgJnhvcgkoJEFIWzFdLCJlZGkiKTsJCSMgbWFnaWMKCSAmbW92CSgmRFdQKDgsImVzcCIpLCJlZGkiKTsKCSAmbW92CSgmRFdQKDEyLCJlc3AiKSwiZWN4Iik7CgkjJm1vdgkoJEUsJkRXUCgxNiwiZXNwIikpOwoJJm1vdgkoImVkaSIsJkRXUCgyMCwiZXNwIikpOwoJJm1vdgkoImVieCIsJkRXUCgyNCwiZXNwIikpOwoJJm1vdgkoImVjeCIsJkRXUCgyOCwiZXNwIikpOwoJJmFkZAkoJEUsJkRXUCgxNiwiZXNpIikpOwoJJmFkZAkoImVkaSIsJkRXUCgyMCwiZXNpIikpOwoJJmFkZAkoImVieCIsJkRXUCgyNCwiZXNpIikpOwoJJmFkZAkoImVjeCIsJkRXUCgyOCwiZXNpIikpOwoJJm1vdgkoJkRXUCgxNiwiZXNpIiksJEUpOwoJJm1vdgkoJkRXUCgyMCwiZXNpIiksImVkaSIpOwoJJm1vdgkoJkRXUCgyNCwiZXNpIiksImVieCIpOwoJJm1vdgkoJkRXUCgyOCwiZXNpIiksImVjeCIpOwoJICMmbW92CSgmRFdQKDE2LCJlc3AiKSwkRSk7CgkgJm1vdgkoJkRXUCgyMCwiZXNwIiksImVkaSIpOwoJJm1vdgkoImVkaSIsJkRXUCg5Nis0LCJlc3AiKSk7CSMgaW5wCgkgJm1vdgkoJkRXUCgyNCwiZXNwIiksImVieCIpOwoJICZtb3YJKCZEV1AoMjgsImVzcCIpLCJlY3giKTsKCgkmY21wCSgiZWRpIiwmRFdQKDk2KzgsImVzcCIpKTsJIyBhcmUgd2UgZG9uZSB5ZXQ/CgkmamIJKCZsYWJlbCgiZ3JhbmRfbG9vcCIpKTsKCgkmbW92CSgiZXNwIiwmRFdQKDk2KzEyLCJlc3AiKSk7CSMgcmVzdG9yZSBzcAomZnVuY3Rpb25fZW5kX0EoKTsKfQoJCQkJCQlpZiAoISRpMzg2ICYmICR4bW0pIHt7ewppZiAoJHNoYWV4dCkgewojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgSW50ZWwgU0hBIEV4dGVuc2lvbnMgaW1wbGVtZW50YXRpb24gb2YgU0hBMjU2IHVwZGF0ZSBmdW5jdGlvbi4KIwpteSAoJGN0eCwkaW5wLCRlbmQpPSgiZXNpIiwiZWRpIiwiZWF4Iik7Cm15ICgkV2ksJEFCRUYsJENER0gsJFRNUCk9bWFwKCJ4bW0kXyIsKDAuLjIsNykpOwpteSBATVNHPW1hcCgieG1tJF8iLCgzLi42KSk7CgpzdWIgc2hhMjU2b3AzOCB7CiBteSAoJG9wY29kZWxldCwkZHN0LCRzcmMpPUBfOwogICAgaWYgKCIkZHN0OiRzcmMiID1+IC94bW0oWzAtN10pOnhtbShbMC03XSkvKQogICAgewkmZGF0YV9ieXRlKDB4MGYsMHgzOCwkb3Bjb2RlbGV0LDB4YzB8KCQxPDwzKXwkMik7CX0KfQpzdWIgc2hhMjU2cm5kczIJeyBzaGEyNTZvcDM4KDB4Y2IsQF8pOyB9CnN1YiBzaGEyNTZtc2cxCXsgc2hhMjU2b3AzOCgweGNjLEBfKTsgfQpzdWIgc2hhMjU2bXNnMgl7IHNoYTI1Nm9wMzgoMHhjZCxAXyk7IH0KCiZzZXRfbGFiZWwoInNoYWV4dCIsMzIpOwoJJnN1YgkJKCJlc3AiLDMyKTsKCgkmbW92ZHF1CQkoJEFCRUYsJlFXUCgwLCRjdHgpKTsJCSMgRENCQQoJJmxlYQkJKCRLMjU2LCZEV1AoMHg4MCwkSzI1NikpOwoJJm1vdmRxdQkJKCRDREdILCZRV1AoMTYsJGN0eCkpOwkJIyBIR0ZFCgkmbW92ZHFhCQkoJFRNUCwmUVdQKDB4MTAwLTB4ODAsJEsyNTYpKTsJIyBieXRlIHN3YXAgbWFzawoKCSZwc2h1ZmQJCSgkV2ksJEFCRUYsMHgxYik7CQkjIEFCQ0QKCSZwc2h1ZmQJCSgkQUJFRiwkQUJFRiwweGIxKTsJCSMgQ0RBQgoJJnBzaHVmZAkJKCRDREdILCRDREdILDB4MWIpOwkJIyBFRkdICgkmcGFsaWducgkoJEFCRUYsJENER0gsOCk7CQkjIEFCRUYKCSZwdW5wY2tscWRxCSgkQ0RHSCwkV2kpOwkJCSMgQ0RHSAoJJmptcAkJKCZsYWJlbCgibG9vcF9zaGFleHQiKSk7Cgomc2V0X2xhYmVsKCJsb29wX3NoYWV4dCIsMTYpOwoJJm1vdmRxdQkJKEBNU0dbMF0sJlFXUCgwLCRpbnApKTsKCSZtb3ZkcXUJCShATVNHWzFdLCZRV1AoMHgxMCwkaW5wKSk7CgkmbW92ZHF1CQkoQE1TR1syXSwmUVdQKDB4MjAsJGlucCkpOwoJJnBzaHVmYgkJKEBNU0dbMF0sJFRNUCk7CgkmbW92ZHF1CQkoQE1TR1szXSwmUVdQKDB4MzAsJGlucCkpOwoJJm1vdmRxYQkJKCZRV1AoMTYsImVzcCIpLCRDREdIKTsJCSMgb2ZmbG9hZAoKCSZtb3ZkcWEJCSgkV2ksJlFXUCgwKjE2LTB4ODAsJEsyNTYpKTsKCSZwYWRkZAkJKCRXaSxATVNHWzBdKTsKCSZwc2h1ZmIJCShATVNHWzFdLCRUTVApOwoJJnNoYTI1NnJuZHMyCSgkQ0RHSCwkQUJFRik7CQkJIyAwLTMKCSZwc2h1ZmQJCSgkV2ksJFdpLDB4MGUpOwoJJm5vcAkJKCk7CgkmbW92ZHFhCQkoJlFXUCgwLCJlc3AiKSwkQUJFRik7CQkjIG9mZmxvYWQKCSZzaGEyNTZybmRzMgkoJEFCRUYsJENER0gpOwoKCSZtb3ZkcWEJCSgkV2ksJlFXUCgxKjE2LTB4ODAsJEsyNTYpKTsKCSZwYWRkZAkJKCRXaSxATVNHWzFdKTsKCSZwc2h1ZmIJCShATVNHWzJdLCRUTVApOwoJJnNoYTI1NnJuZHMyCSgkQ0RHSCwkQUJFRik7CQkJIyA0LTcKCSZwc2h1ZmQJCSgkV2ksJFdpLDB4MGUpOwoJJmxlYQkJKCRpbnAsJkRXUCgweDQwLCRpbnApKTsKCSZzaGEyNTZtc2cxCShATVNHWzBdLEBNU0dbMV0pOwoJJnNoYTI1NnJuZHMyCSgkQUJFRiwkQ0RHSCk7CgoJJm1vdmRxYQkJKCRXaSwmUVdQKDIqMTYtMHg4MCwkSzI1NikpOwoJJnBhZGRkCQkoJFdpLEBNU0dbMl0pOwoJJnBzaHVmYgkJKEBNU0dbM10sJFRNUCk7Cgkmc2hhMjU2cm5kczIJKCRDREdILCRBQkVGKTsJCQkjIDgtMTEKCSZwc2h1ZmQJCSgkV2ksJFdpLDB4MGUpOwoJJm1vdmRxYQkJKCRUTVAsQE1TR1szXSk7CgkmcGFsaWducgkoJFRNUCxATVNHWzJdLDQpOwoJJm5vcAkJKCk7CgkmcGFkZGQJCShATVNHWzBdLCRUTVApOwoJJnNoYTI1Nm1zZzEJKEBNU0dbMV0sQE1TR1syXSk7Cgkmc2hhMjU2cm5kczIJKCRBQkVGLCRDREdIKTsKCgkmbW92ZHFhCQkoJFdpLCZRV1AoMyoxNi0weDgwLCRLMjU2KSk7CgkmcGFkZGQJCSgkV2ksQE1TR1szXSk7Cgkmc2hhMjU2bXNnMgkoQE1TR1swXSxATVNHWzNdKTsKCSZzaGEyNTZybmRzMgkoJENER0gsJEFCRUYpOwkJCSMgMTItMTUKCSZwc2h1ZmQJCSgkV2ksJFdpLDB4MGUpOwoJJm1vdmRxYQkJKCRUTVAsQE1TR1swXSk7CgkmcGFsaWducgkoJFRNUCxATVNHWzNdLDQpOwoJJm5vcAkJKCk7CgkmcGFkZGQJCShATVNHWzFdLCRUTVApOwoJJnNoYTI1Nm1zZzEJKEBNU0dbMl0sQE1TR1szXSk7Cgkmc2hhMjU2cm5kczIJKCRBQkVGLCRDREdIKTsKCmZvcigkaT00OyRpPDE2LTM7JGkrKykgewoJJm1vdmRxYQkJKCRXaSwmUVdQKCRpKjE2LTB4ODAsJEsyNTYpKTsKCSZwYWRkZAkJKCRXaSxATVNHWzBdKTsKCSZzaGEyNTZtc2cyCShATVNHWzFdLEBNU0dbMF0pOwoJJnNoYTI1NnJuZHMyCSgkQ0RHSCwkQUJFRik7CQkJIyAxNi0xOS4uLgoJJnBzaHVmZAkJKCRXaSwkV2ksMHgwZSk7CgkmbW92ZHFhCQkoJFRNUCxATVNHWzFdKTsKCSZwYWxpZ25yCSgkVE1QLEBNU0dbMF0sNCk7Cgkmbm9wCQkoKTsKCSZwYWRkZAkJKEBNU0dbMl0sJFRNUCk7Cgkmc2hhMjU2bXNnMQkoQE1TR1szXSxATVNHWzBdKTsKCSZzaGEyNTZybmRzMgkoJEFCRUYsJENER0gpOwoKCXB1c2goQE1TRyxzaGlmdChATVNHKSk7Cn0KCSZtb3ZkcWEJCSgkV2ksJlFXUCgxMyoxNi0weDgwLCRLMjU2KSk7CgkmcGFkZGQJCSgkV2ksQE1TR1swXSk7Cgkmc2hhMjU2bXNnMgkoQE1TR1sxXSxATVNHWzBdKTsKCSZzaGEyNTZybmRzMgkoJENER0gsJEFCRUYpOwkJCSMgNTItNTUKCSZwc2h1ZmQJCSgkV2ksJFdpLDB4MGUpOwoJJm1vdmRxYQkJKCRUTVAsQE1TR1sxXSkKCSZwYWxpZ25yCSgkVE1QLEBNU0dbMF0sNCk7Cgkmc2hhMjU2cm5kczIJKCRBQkVGLCRDREdIKTsKCSZwYWRkZAkJKEBNU0dbMl0sJFRNUCk7CgoJJm1vdmRxYQkJKCRXaSwmUVdQKDE0KjE2LTB4ODAsJEsyNTYpKTsKCSZwYWRkZAkJKCRXaSxATVNHWzFdKTsKCSZzaGEyNTZybmRzMgkoJENER0gsJEFCRUYpOwkJCSMgNTYtNTkKCSZwc2h1ZmQJCSgkV2ksJFdpLDB4MGUpOwoJJnNoYTI1Nm1zZzIJKEBNU0dbMl0sQE1TR1sxXSk7CgkmbW92ZHFhCQkoJFRNUCwmUVdQKDB4MTAwLTB4ODAsJEsyNTYpKTsJIyBieXRlIHN3YXAgbWFzawoJJnNoYTI1NnJuZHMyCSgkQUJFRiwkQ0RHSCk7CgoJJm1vdmRxYQkJKCRXaSwmUVdQKDE1KjE2LTB4ODAsJEsyNTYpKTsKCSZwYWRkZAkJKCRXaSxATVNHWzJdKTsKCSZub3AJCSgpOwoJJnNoYTI1NnJuZHMyCSgkQ0RHSCwkQUJFRik7CQkJIyA2MC02MwoJJnBzaHVmZAkJKCRXaSwkV2ksMHgwZSk7CgkmY21wCQkoJGVuZCwkaW5wKTsKCSZub3AJCSgpOwoJJnNoYTI1NnJuZHMyCSgkQUJFRiwkQ0RHSCk7CgoJJnBhZGRkCQkoJENER0gsJlFXUCgxNiwiZXNwIikpOwoJJnBhZGRkCQkoJEFCRUYsJlFXUCgwLCJlc3AiKSk7Cgkmam56CQkoJmxhYmVsKCJsb29wX3NoYWV4dCIpKTsKCgkmcHNodWZkCQkoJENER0gsJENER0gsMHhiMSk7CQkjIERDSEcKCSZwc2h1ZmQJCSgkVE1QLCRBQkVGLDB4MWIpOwkJIyBGRUJBCgkmcHNodWZkCQkoJEFCRUYsJEFCRUYsMHhiMSk7CQkjIEJBRkUKCSZwdW5wY2tocWRxCSgkQUJFRiwkQ0RHSCk7CQkJIyBEQ0JBCgkmcGFsaWducgkoJENER0gsJFRNUCw4KTsJCQkjIEhHRkUKCgkmbW92CQkoImVzcCIsJkRXUCgzMisxMiwiZXNwIikpOwoJJm1vdmRxdQkJKCZRV1AoMCwkY3R4KSwkQUJFRik7CgkmbW92ZHF1CQkoJlFXUCgxNiwkY3R4KSwkQ0RHSCk7CiZmdW5jdGlvbl9lbmRfQSgpOwp9CgpteSBAWCA9IG1hcCgieG1tJF8iLCgwLi4zKSk7Cm15ICgkdDAsJHQxLCR0MiwkdDMpID0gbWFwKCJ4bW0kXyIsKDQuLjcpKTsKbXkgQEFIID0gKCRBLCRUKTsKCiZzZXRfbGFiZWwoIlNTU0UzIiwzMik7CgkmbGVhCSgiZXNwIiwmRFdQKC05NiwiZXNwIikpOwoJIyBjb3B5IGN0eC0+aFswLTddIHRvIEEsQixDLEQsRSxGLEcsSCBvbiBzdGFjawoJJm1vdgkoJEFIWzBdLCZEV1AoMCwiZXNpIikpOwoJJm1vdgkoJEFIWzFdLCZEV1AoNCwiZXNpIikpOwoJJm1vdgkoImVjeCIsJkRXUCg4LCJlc2kiKSk7CgkmbW92CSgiZWRpIiwmRFdQKDEyLCJlc2kiKSk7CgkjJm1vdgkoJkRXUCgwLCJlc3AiKSwkQUhbMF0pOwoJJm1vdgkoJkRXUCg0LCJlc3AiKSwkQUhbMV0pOwoJJnhvcgkoJEFIWzFdLCJlY3giKTsJCQkjIG1hZ2ljCgkmbW92CSgmRFdQKDgsImVzcCIpLCJlY3giKTsKCSZtb3YJKCZEV1AoMTIsImVzcCIpLCJlZGkiKTsKCSZtb3YJKCRFLCZEV1AoMTYsImVzaSIpKTsKCSZtb3YJKCJlZGkiLCZEV1AoMjAsImVzaSIpKTsKCSZtb3YJKCJlY3giLCZEV1AoMjQsImVzaSIpKTsKCSZtb3YJKCJlc2kiLCZEV1AoMjgsImVzaSIpKTsKCSMmbW92CSgmRFdQKDE2LCJlc3AiKSwkRSk7CgkmbW92CSgmRFdQKDIwLCJlc3AiKSwiZWRpIik7CgkmbW92CSgiZWRpIiwmRFdQKDk2KzQsImVzcCIpKTsJIyBpbnAKCSZtb3YJKCZEV1AoMjQsImVzcCIpLCJlY3giKTsKCSZtb3YJKCZEV1AoMjgsImVzcCIpLCJlc2kiKTsKCSZtb3ZkcWEJKCR0MywmUVdQKDI1NiwkSzI1NikpOwoJJmptcAkoJmxhYmVsKCJncmFuZF9zc3NlMyIpKTsKCiZzZXRfbGFiZWwoImdyYW5kX3Nzc2UzIiwxNik7CgkjIGxvYWQgaW5wdXQsIHJldmVyc2UgYnl0ZSBvcmRlciwgYWRkIEsyNTZbMC4uMTVdLCBzYXZlIHRvIHN0YWNrCgkmbW92ZHF1CShAWFswXSwmUVdQKDAsImVkaSIpKTsKCSZtb3ZkcXUJKEBYWzFdLCZRV1AoMTYsImVkaSIpKTsKCSZtb3ZkcXUJKEBYWzJdLCZRV1AoMzIsImVkaSIpKTsKCSZtb3ZkcXUJKEBYWzNdLCZRV1AoNDgsImVkaSIpKTsKCSZhZGQJKCJlZGkiLDY0KTsKCSZwc2h1ZmIJKEBYWzBdLCR0Myk7CgkmbW92CSgmRFdQKDk2KzQsImVzcCIpLCJlZGkiKTsKCSZwc2h1ZmIJKEBYWzFdLCR0Myk7CgkmbW92ZHFhCSgkdDAsJlFXUCgwLCRLMjU2KSk7CgkmcHNodWZiCShAWFsyXSwkdDMpOwoJJm1vdmRxYQkoJHQxLCZRV1AoMTYsJEsyNTYpKTsKCSZwYWRkZAkoJHQwLEBYWzBdKTsKCSZwc2h1ZmIJKEBYWzNdLCR0Myk7CgkmbW92ZHFhCSgkdDIsJlFXUCgzMiwkSzI1NikpOwoJJnBhZGRkCSgkdDEsQFhbMV0pOwoJJm1vdmRxYQkoJHQzLCZRV1AoNDgsJEsyNTYpKTsKCSZtb3ZkcWEJKCZRV1AoMzIrMCwiZXNwIiksJHQwKTsKCSZwYWRkZAkoJHQyLEBYWzJdKTsKCSZtb3ZkcWEJKCZRV1AoMzIrMTYsImVzcCIpLCR0MSk7CgkmcGFkZGQJKCR0MyxAWFszXSk7CgkmbW92ZHFhCSgmUVdQKDMyKzMyLCJlc3AiKSwkdDIpOwoJJm1vdmRxYQkoJlFXUCgzMis0OCwiZXNwIiksJHQzKTsKCSZqbXAJKCZsYWJlbCgic3NzZTNfMDBfNDciKSk7Cgomc2V0X2xhYmVsKCJzc3NlM18wMF80NyIsMTYpOwoJJmFkZAkJKCRLMjU2LDY0KTsKCnN1YiBTU1NFM18wMF80NyAoKSB7Cm15ICRqID0gc2hpZnQ7Cm15ICRib2R5ID0gc2hpZnQ7Cm15IEBYID0gQF87Cm15IEBpbnNucyA9ICgmJGJvZHksJiRib2R5LCYkYm9keSwmJGJvZHkpOwkjIDEyMCBpbnN0cnVjdGlvbnMKCgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkmbW92ZHFhCQkoJHQwLEBYWzFdKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsJCQkjIEAKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSZtb3ZkcWEJCSgkdDMsQFhbM10pOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJJnBhbGlnbnIJKCR0MCxAWFswXSw0KTsJCSMgWFsxLi40XQoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwkJCSMgQAoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICZwYWxpZ25yCSgkdDMsQFhbMl0sNCk7CQkjIFhbOS4uMTJdCgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkmbW92ZHFhCQkoJHQxLCR0MCk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CQkJIyBACgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkmbW92ZHFhCQkoJHQyLCR0MCk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkmcHNybGQJCSgkdDAsMyk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CQkJIyBACgkgJnBhZGRkCQkoQFhbMF0sJHQzKTsJCSMgWFswLi4zXSArPSBYWzkuLjEyXQoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJJnBzcmxkCQkoJHQyLDcpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwkJCSMgQAoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICZwc2h1ZmQJKCR0MyxAWFszXSwwYjExMTExMDEwKTsJIyBYWzE0Li4xNV0KCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSZwc2xsZAkJKCR0MSwzMi0xOCk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CQkJIyBACgkmcHhvcgkJKCR0MCwkdDIpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJJnBzcmxkCQkoJHQyLDE4LTcpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwkJCSMgQAoJJnB4b3IJCSgkdDAsJHQxKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSZwc2xsZAkJKCR0MSwxOC03KTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsJCQkjIEAKCSZweG9yCQkoJHQwLCR0Mik7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgJm1vdmRxYQkoJHQyLCR0Myk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CQkJIyBACgkmcHhvcgkJKCR0MCwkdDEpOwkJIyBzaWdtYTAoWFsxLi40XSkKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAmcHNybGQJCSgkdDMsMTApOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwkJCSMgQAoJJnBhZGRkCQkoQFhbMF0sJHQwKTsJCSMgWFswLi4zXSArPSBzaWdtYTAoWFsxLi40XSkKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAmcHNybHEJCSgkdDIsMTcpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwkJCSMgQAoJICZweG9yCQkoJHQzLCR0Mik7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgJnBzcmxxCQkoJHQyLDE5LTE3KTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsJCQkjIEAKCSAmcHhvcgkJKCR0MywkdDIpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICZwc2h1ZmQJKCR0MywkdDMsMGIxMDAwMDAwMCk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CQkJIyBACgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CQkJIyBACgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgJnBzcmxkcQkoJHQzLDgpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJJnBhZGRkCQkoQFhbMF0sJHQzKTsJCSMgWFswLi4xXSArPSBzaWdtYTEoWFsxNC4uMTVdKQoJICBldmFsKHNoaWZ0KEBpbnNucykpOwkJCSMgQAoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwkJCSMgQAoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICZwc2h1ZmQJKCR0MyxAWFswXSwwYjAxMDEwMDAwKTsJIyBYWzE2Li4xN10KCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAmbW92ZHFhCSgkdDIsJHQzKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsJCQkjIEAKCSAmcHNybGQJCSgkdDMsMTApOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICZwc3JscQkJKCR0MiwxNyk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CQkJIyBACgkgJnB4b3IJCSgkdDMsJHQyKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAmcHNybHEJCSgkdDIsMTktMTcpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwkJCSMgQAoJICZweG9yCQkoJHQzLCR0Mik7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgJnBzaHVmZAkoJHQzLCR0MywwYjAwMDAxMDAwKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsJCQkjIEAKCSZtb3ZkcWEJCSgkdDIsJlFXUCgxNiokaiwkSzI1NikpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICZwc2xsZHEJKCR0Myw4KTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsJCQkjIEAKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsJCQkjIEAKCSZwYWRkZAkJKEBYWzBdLCR0Myk7CQkjIFhbMi4uM10gKz0gc2lnbWExKFhbMTYuLjE3XSkKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSZwYWRkZAkJKCR0MixAWFswXSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CQkJIyBACgoJZm9yZWFjaCAoQGluc25zKSB7IGV2YWw7IH0JCSMgcmVtYWluaW5nIGluc3RydWN0aW9ucwoKCSZtb3ZkcWEJCSgmUVdQKDMyKzE2KiRqLCJlc3AiKSwkdDIpOwp9CgpzdWIgYm9keV8wMF8xNSAoKSB7CgkoCgknJm1vdgkoImVjeCIsJEUpOycsCgknJnJvcgkoJEUsMjUtMTEpOycsCgkgJyZtb3YJKCJlc2kiLCZvZmYoJGYpKTsnLAoJJyZ4b3IJKCRFLCJlY3giKTsnLAoJICcmbW92CSgiZWRpIiwmb2ZmKCRnKSk7JywKCSAnJnhvcgkoImVzaSIsImVkaSIpOycsCgknJnJvcgkoJEUsMTEtNik7JywKCSAnJmFuZAkoImVzaSIsImVjeCIpOycsCgkgJyZtb3YJKCZvZmYoJGUpLCJlY3giKTsnLAkjIHNhdmUgJEUsIG1vZHVsby1zY2hlZHVsZWQKCScmeG9yCSgkRSwiZWN4Iik7JywKCSAnJnhvcgkoImVkaSIsImVzaSIpOycsCSMgQ2goZSxmLGcpCgknJnJvcgkoJEUsNik7JywJCSMgVCA9IFNpZ21hMShlKQoJICcmbW92CSgiZWN4IiwkQUhbMF0pOycsCgkgJyZhZGQJKCRFLCJlZGkiKTsnLAkJIyBUICs9IENoKGUsZixnKQoJICcmbW92CSgiZWRpIiwmb2ZmKCRiKSk7JywKCScmbW92CSgiZXNpIiwkQUhbMF0pOycsCgoJJyZyb3IJKCJlY3giLDIyLTEzKTsnLAoJICcmbW92CSgmb2ZmKCRhKSwkQUhbMF0pOycsCSMgc2F2ZSAkQSwgbW9kdWxvLXNjaGVkdWxlZAoJJyZ4b3IJKCJlY3giLCRBSFswXSk7JywKCSAnJnhvcgkoJEFIWzBdLCJlZGkiKTsnLAkjIGEgXj0gYiwgKGJeYykgaW4gbmV4dCByb3VuZAoJICcmYWRkCSgkRSwmb2ZmKCRoKSk7JywJIyBUICs9IGgKCScmcm9yCSgiZWN4IiwxMy0yKTsnLAoJICcmYW5kCSgkQUhbMV0sJEFIWzBdKTsnLAkjIChiXmMpICY9IChhXmIpCgknJnhvcgkoImVjeCIsImVzaSIpOycsCgkgJyZhZGQJKCRFLCZEV1AoMzIrNCooJGkmMTUpLCJlc3AiKSk7JywJIyBUICs9IEtbaV0rWFtpXQoJICcmeG9yCSgkQUhbMV0sImVkaSIpOycsCSMgaCA9IE1haihhLGIsYykgPSBDaChhXmIsYyxiKQoJJyZyb3IJKCJlY3giLDIpOycsCQkjIFNpZ21hMChhKQoKCSAnJmFkZAkoJEFIWzFdLCRFKTsnLAkJIyBoICs9IFQKCSAnJmFkZAkoJEUsJm9mZigkZCkpOycsCSMgZCArPSBUCgknJmFkZAkoJEFIWzFdLCJlY3giKTsnLgkjIGggKz0gU2lnbWEwKGEpCgoJJ0BBSCA9IHJldmVyc2UoQEFIKTsgJGkrKzsnCSMgcm90YXRlKGEsaCkKCSk7Cn0KCiAgICBmb3IgKCRpPTAsJGo9MDsgJGo8NDsgJGorKykgewoJJlNTU0UzXzAwXzQ3KCRqLFwmYm9keV8wMF8xNSxAWCk7CglwdXNoKEBYLHNoaWZ0KEBYKSk7CQkjIHJvdGF0ZShAWCkKICAgIH0KCSZjbXAJKCZEV1AoMTYqJGosJEsyNTYpLDB4MDAwMTAyMDMpOwoJJmpuZQkoJmxhYmVsKCJzc3NlM18wMF80NyIpKTsKCiAgICBmb3IgKCRpPTA7ICRpPDE2OyApIHsKCWZvcmVhY2goYm9keV8wMF8xNSgpKSB7IGV2YWw7IH0KICAgIH0KCgkmbW92CSgiZXNpIiwmRFdQKDk2LCJlc3AiKSk7CSNjdHgKCQkJCQkjJm1vdgkoJEFIWzBdLCZEV1AoMCwiZXNwIikpOwoJJnhvcgkoJEFIWzFdLCJlZGkiKTsJCSMmbW92CSgkQUhbMV0sJkRXUCg0LCJlc3AiKSk7CgkJCQkJIyZtb3YJKCJlZGkiLCAmRFdQKDgsImVzcCIpKTsKCSZtb3YJKCJlY3giLCZEV1AoMTIsImVzcCIpKTsKCSZhZGQJKCRBSFswXSwmRFdQKDAsImVzaSIpKTsKCSZhZGQJKCRBSFsxXSwmRFdQKDQsImVzaSIpKTsKCSZhZGQJKCJlZGkiLCZEV1AoOCwiZXNpIikpOwoJJmFkZAkoImVjeCIsJkRXUCgxMiwiZXNpIikpOwoJJm1vdgkoJkRXUCgwLCJlc2kiKSwkQUhbMF0pOwoJJm1vdgkoJkRXUCg0LCJlc2kiKSwkQUhbMV0pOwoJJm1vdgkoJkRXUCg4LCJlc2kiKSwiZWRpIik7CgkmbW92CSgmRFdQKDEyLCJlc2kiKSwiZWN4Iik7CgkgIyZtb3YJKCZEV1AoMCwiZXNwIiksJEFIWzBdKTsKCSAmbW92CSgmRFdQKDQsImVzcCIpLCRBSFsxXSk7CgkgJnhvcgkoJEFIWzFdLCJlZGkiKTsJCQkjIG1hZ2ljCgkgJm1vdgkoJkRXUCg4LCJlc3AiKSwiZWRpIik7CgkgJm1vdgkoJkRXUCgxMiwiZXNwIiksImVjeCIpOwoJIyZtb3YJKCRFLCZEV1AoMTYsImVzcCIpKTsKCSZtb3YJKCJlZGkiLCZEV1AoMjAsImVzcCIpKTsKCSZtb3YJKCJlY3giLCZEV1AoMjQsImVzcCIpKTsKCSZhZGQJKCRFLCZEV1AoMTYsImVzaSIpKTsKCSZhZGQJKCJlZGkiLCZEV1AoMjAsImVzaSIpKTsKCSZhZGQJKCJlY3giLCZEV1AoMjQsImVzaSIpKTsKCSZtb3YJKCZEV1AoMTYsImVzaSIpLCRFKTsKCSZtb3YJKCZEV1AoMjAsImVzaSIpLCJlZGkiKTsKCSAmbW92CSgmRFdQKDIwLCJlc3AiKSwiZWRpIik7CgkmbW92CSgiZWRpIiwmRFdQKDI4LCJlc3AiKSk7CgkmbW92CSgmRFdQKDI0LCJlc2kiKSwiZWN4Iik7CgkgIyZtb3YJKCZEV1AoMTYsImVzcCIpLCRFKTsKCSZhZGQJKCJlZGkiLCZEV1AoMjgsImVzaSIpKTsKCSAmbW92CSgmRFdQKDI0LCJlc3AiKSwiZWN4Iik7CgkmbW92CSgmRFdQKDI4LCJlc2kiKSwiZWRpIik7CgkgJm1vdgkoJkRXUCgyOCwiZXNwIiksImVkaSIpOwoJJm1vdgkoImVkaSIsJkRXUCg5Nis0LCJlc3AiKSk7CSMgaW5wCgoJJm1vdmRxYQkoJHQzLCZRV1AoNjQsJEsyNTYpKTsKCSZzdWIJKCRLMjU2LDMqNjQpOwkJCSMgcmV3aW5kIEsKCSZjbXAJKCJlZGkiLCZEV1AoOTYrOCwiZXNwIikpOwkjIGFyZSB3ZSBkb25lIHlldD8KCSZqYgkoJmxhYmVsKCJncmFuZF9zc3NlMyIpKTsKCgkmbW92CSgiZXNwIiwmRFdQKDk2KzEyLCJlc3AiKSk7CSMgcmVzdG9yZSBzcAomZnVuY3Rpb25fZW5kX0EoKTsKCQkJCQkJaWYgKCRhdngpIHsKJnNldF9sYWJlbCgiQVZYIiwzMik7CgkJCQkJCWlmICgkYXZ4PjEpIHsKCSZhbmQJKCJlZHgiLDE8PDh8MTw8Myk7CQkjIGNoZWNrIGZvciBCTUkyK0JNSTEKCSZjbXAJKCJlZHgiLDE8PDh8MTw8Myk7CgkmamUJKCZsYWJlbCgiQVZYX0JNSSIpKTsKCQkJCQkJfQoJJmxlYQkoImVzcCIsJkRXUCgtOTYsImVzcCIpKTsKCSZ2emVyb2FsbAkoKTsKCSMgY29weSBjdHgtPmhbMC03XSB0byBBLEIsQyxELEUsRixHLEggb24gc3RhY2sKCSZtb3YJKCRBSFswXSwmRFdQKDAsImVzaSIpKTsKCSZtb3YJKCRBSFsxXSwmRFdQKDQsImVzaSIpKTsKCSZtb3YJKCJlY3giLCZEV1AoOCwiZXNpIikpOwoJJm1vdgkoImVkaSIsJkRXUCgxMiwiZXNpIikpOwoJIyZtb3YJKCZEV1AoMCwiZXNwIiksJEFIWzBdKTsKCSZtb3YJKCZEV1AoNCwiZXNwIiksJEFIWzFdKTsKCSZ4b3IJKCRBSFsxXSwiZWN4Iik7CQkJIyBtYWdpYwoJJm1vdgkoJkRXUCg4LCJlc3AiKSwiZWN4Iik7CgkmbW92CSgmRFdQKDEyLCJlc3AiKSwiZWRpIik7CgkmbW92CSgkRSwmRFdQKDE2LCJlc2kiKSk7CgkmbW92CSgiZWRpIiwmRFdQKDIwLCJlc2kiKSk7CgkmbW92CSgiZWN4IiwmRFdQKDI0LCJlc2kiKSk7CgkmbW92CSgiZXNpIiwmRFdQKDI4LCJlc2kiKSk7CgkjJm1vdgkoJkRXUCgxNiwiZXNwIiksJEUpOwoJJm1vdgkoJkRXUCgyMCwiZXNwIiksImVkaSIpOwoJJm1vdgkoImVkaSIsJkRXUCg5Nis0LCJlc3AiKSk7CSMgaW5wCgkmbW92CSgmRFdQKDI0LCJlc3AiKSwiZWN4Iik7CgkmbW92CSgmRFdQKDI4LCJlc3AiKSwiZXNpIik7Cgkmdm1vdmRxYQkoJHQzLCZRV1AoMjU2LCRLMjU2KSk7Cgkmam1wCSgmbGFiZWwoImdyYW5kX2F2eCIpKTsKCiZzZXRfbGFiZWwoImdyYW5kX2F2eCIsMzIpOwoJIyBsb2FkIGlucHV0LCByZXZlcnNlIGJ5dGUgb3JkZXIsIGFkZCBLMjU2WzAuLjE1XSwgc2F2ZSB0byBzdGFjawoJJnZtb3ZkcXUJKEBYWzBdLCZRV1AoMCwiZWRpIikpOwoJJnZtb3ZkcXUJKEBYWzFdLCZRV1AoMTYsImVkaSIpKTsKCSZ2bW92ZHF1CShAWFsyXSwmUVdQKDMyLCJlZGkiKSk7Cgkmdm1vdmRxdQkoQFhbM10sJlFXUCg0OCwiZWRpIikpOwoJJmFkZAkJKCJlZGkiLDY0KTsKCSZ2cHNodWZiCShAWFswXSxAWFswXSwkdDMpOwoJJm1vdgkJKCZEV1AoOTYrNCwiZXNwIiksImVkaSIpOwoJJnZwc2h1ZmIJKEBYWzFdLEBYWzFdLCR0Myk7CgkmdnBzaHVmYgkoQFhbMl0sQFhbMl0sJHQzKTsKCSZ2cGFkZGQJCSgkdDAsQFhbMF0sJlFXUCgwLCRLMjU2KSk7CgkmdnBzaHVmYgkoQFhbM10sQFhbM10sJHQzKTsKCSZ2cGFkZGQJCSgkdDEsQFhbMV0sJlFXUCgxNiwkSzI1NikpOwoJJnZwYWRkZAkJKCR0MixAWFsyXSwmUVdQKDMyLCRLMjU2KSk7CgkmdnBhZGRkCQkoJHQzLEBYWzNdLCZRV1AoNDgsJEsyNTYpKTsKCSZ2bW92ZHFhCSgmUVdQKDMyKzAsImVzcCIpLCR0MCk7Cgkmdm1vdmRxYQkoJlFXUCgzMisxNiwiZXNwIiksJHQxKTsKCSZ2bW92ZHFhCSgmUVdQKDMyKzMyLCJlc3AiKSwkdDIpOwoJJnZtb3ZkcWEJKCZRV1AoMzIrNDgsImVzcCIpLCR0Myk7Cgkmam1wCQkoJmxhYmVsKCJhdnhfMDBfNDciKSk7Cgomc2V0X2xhYmVsKCJhdnhfMDBfNDciLDE2KTsKCSZhZGQJCSgkSzI1Niw2NCk7CgpzdWIgWHVwZGF0ZV9BVlggKCkgewoJKAoJJyZ2cGFsaWducgkoJHQwLEBYWzFdLEBYWzBdLDQpOycsCSMgWFsxLi40XQoJICcmdnBhbGlnbnIJKCR0MyxAWFszXSxAWFsyXSw0KTsnLAkjIFhbOS4uMTJdCgknJnZwc3JsZAkoJHQyLCR0MCw3KTsnLAoJICcmdnBhZGRkCShAWFswXSxAWFswXSwkdDMpOycsCSMgWFswLi4zXSArPSBYWzkuLjE2XQoJJyZ2cHNybGQJKCR0MywkdDAsMyk7JywKCScmdnBzbGxkCSgkdDEsJHQwLDE0KTsnLAoJJyZ2cHhvcgkJKCR0MCwkdDMsJHQyKTsnLAoJICcmdnBzaHVmZAkoJHQzLEBYWzNdLDBiMTExMTEwMTApJywjIFhbMTQuLjE1XQoJJyZ2cHNybGQJKCR0MiwkdDIsMTgtNyk7JywKCScmdnB4b3IJCSgkdDAsJHQwLCR0MSk7JywKCScmdnBzbGxkCSgkdDEsJHQxLDI1LTE0KTsnLAoJJyZ2cHhvcgkJKCR0MCwkdDAsJHQyKTsnLAoJICcmdnBzcmxkCSgkdDIsJHQzLDEwKTsnLAoJJyZ2cHhvcgkJKCR0MCwkdDAsJHQxKTsnLAkjIHNpZ21hMChYWzEuLjRdKQoJICcmdnBzcmxxCSgkdDEsJHQzLDE3KTsnLAoJJyZ2cGFkZGQJKEBYWzBdLEBYWzBdLCR0MCk7JywJIyBYWzAuLjNdICs9IHNpZ21hMChYWzEuLjRdKQoJICcmdnB4b3IJKCR0MiwkdDIsJHQxKTsnLAoJICcmdnBzcmxxCSgkdDMsJHQzLDE5KTsnLAoJICcmdnB4b3IJKCR0MiwkdDIsJHQzKTsnLAkjIHNpZ21hMShYWzE0Li4xNV0KCSAnJnZwc2h1ZmQJKCR0MywkdDIsMGIxMDAwMDEwMCk7JywKCScmdnBzcmxkcQkoJHQzLCR0Myw4KTsnLAoJJyZ2cGFkZGQJKEBYWzBdLEBYWzBdLCR0Myk7JywJIyBYWzAuLjFdICs9IHNpZ21hMShYWzE0Li4xNV0pCgkgJyZ2cHNodWZkCSgkdDMsQFhbMF0sMGIwMTAxMDAwMCknLCMgWFsxNi4uMTddCgkgJyZ2cHNybGQJKCR0MiwkdDMsMTApOycsCgkgJyZ2cHNybHEJKCR0MSwkdDMsMTcpOycsCgkgJyZ2cHhvcgkoJHQyLCR0MiwkdDEpOycsCgkgJyZ2cHNybHEJKCR0MywkdDMsMTkpOycsCgkgJyZ2cHhvcgkoJHQyLCR0MiwkdDMpOycsCSMgc2lnbWExKFhbMTYuLjE3XQoJICcmdnBzaHVmZAkoJHQzLCR0MiwwYjExMTAxMDAwKTsnLAoJJyZ2cHNsbGRxCSgkdDMsJHQzLDgpOycsCgknJnZwYWRkZAkoQFhbMF0sQFhbMF0sJHQzKTsnCSMgWFsyLi4zXSArPSBzaWdtYTEoWFsxNi4uMTddKQoJKTsKfQoKbG9jYWwgKnJvciA9IHN1YiB7ICZzaHJkKEBfWzBdLEBfKSB9OwpzdWIgQVZYXzAwXzQ3ICgpIHsKbXkgJGogPSBzaGlmdDsKbXkgJGJvZHkgPSBzaGlmdDsKbXkgQFggPSBAXzsKbXkgQGluc25zID0gKCYkYm9keSwmJGJvZHksJiRib2R5LCYkYm9keSk7CSMgMTIwIGluc3RydWN0aW9ucwpteSAkaW5zbjsKCglmb3JlYWNoIChYdXBkYXRlX0FWWCgpKSB7CQkjIDMxIGluc3RydWN0aW9ucwoJICAgIGV2YWw7CgkgICAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICAgIGV2YWwoJGluc24gPSBzaGlmdChAaW5zbnMpKTsKCSAgICBldmFsKHNoaWZ0KEBpbnNucykpIGlmICgkaW5zbiA9fiAvcm9yeC8gJiYgQGluc25zWzBdID1+IC9yb3J4Lyk7Cgl9CgkmdnBhZGRkCQkoJHQyLEBYWzBdLCZRV1AoMTYqJGosJEsyNTYpKTsKCWZvcmVhY2ggKEBpbnNucykgeyBldmFsOyB9CQkjIHJlbWFpbmluZyBpbnN0cnVjdGlvbnMKCSZ2bW92ZHFhCSgmUVdQKDMyKzE2KiRqLCJlc3AiKSwkdDIpOwp9CgogICAgZm9yICgkaT0wLCRqPTA7ICRqPDQ7ICRqKyspIHsKCSZBVlhfMDBfNDcoJGosXCZib2R5XzAwXzE1LEBYKTsKCXB1c2goQFgsc2hpZnQoQFgpKTsJCSMgcm90YXRlKEBYKQogICAgfQoJJmNtcAkoJkRXUCgxNiokaiwkSzI1NiksMHgwMDAxMDIwMyk7Cgkmam5lCSgmbGFiZWwoImF2eF8wMF80NyIpKTsKCiAgICBmb3IgKCRpPTA7ICRpPDE2OyApIHsKCWZvcmVhY2goYm9keV8wMF8xNSgpKSB7IGV2YWw7IH0KICAgIH0KCgkmbW92CSgiZXNpIiwmRFdQKDk2LCJlc3AiKSk7CSNjdHgKCQkJCQkjJm1vdgkoJEFIWzBdLCZEV1AoMCwiZXNwIikpOwoJJnhvcgkoJEFIWzFdLCJlZGkiKTsJCSMmbW92CSgkQUhbMV0sJkRXUCg0LCJlc3AiKSk7CgkJCQkJIyZtb3YJKCJlZGkiLCAmRFdQKDgsImVzcCIpKTsKCSZtb3YJKCJlY3giLCZEV1AoMTIsImVzcCIpKTsKCSZhZGQJKCRBSFswXSwmRFdQKDAsImVzaSIpKTsKCSZhZGQJKCRBSFsxXSwmRFdQKDQsImVzaSIpKTsKCSZhZGQJKCJlZGkiLCZEV1AoOCwiZXNpIikpOwoJJmFkZAkoImVjeCIsJkRXUCgxMiwiZXNpIikpOwoJJm1vdgkoJkRXUCgwLCJlc2kiKSwkQUhbMF0pOwoJJm1vdgkoJkRXUCg0LCJlc2kiKSwkQUhbMV0pOwoJJm1vdgkoJkRXUCg4LCJlc2kiKSwiZWRpIik7CgkmbW92CSgmRFdQKDEyLCJlc2kiKSwiZWN4Iik7CgkgIyZtb3YJKCZEV1AoMCwiZXNwIiksJEFIWzBdKTsKCSAmbW92CSgmRFdQKDQsImVzcCIpLCRBSFsxXSk7CgkgJnhvcgkoJEFIWzFdLCJlZGkiKTsJCQkjIG1hZ2ljCgkgJm1vdgkoJkRXUCg4LCJlc3AiKSwiZWRpIik7CgkgJm1vdgkoJkRXUCgxMiwiZXNwIiksImVjeCIpOwoJIyZtb3YJKCRFLCZEV1AoMTYsImVzcCIpKTsKCSZtb3YJKCJlZGkiLCZEV1AoMjAsImVzcCIpKTsKCSZtb3YJKCJlY3giLCZEV1AoMjQsImVzcCIpKTsKCSZhZGQJKCRFLCZEV1AoMTYsImVzaSIpKTsKCSZhZGQJKCJlZGkiLCZEV1AoMjAsImVzaSIpKTsKCSZhZGQJKCJlY3giLCZEV1AoMjQsImVzaSIpKTsKCSZtb3YJKCZEV1AoMTYsImVzaSIpLCRFKTsKCSZtb3YJKCZEV1AoMjAsImVzaSIpLCJlZGkiKTsKCSAmbW92CSgmRFdQKDIwLCJlc3AiKSwiZWRpIik7CgkmbW92CSgiZWRpIiwmRFdQKDI4LCJlc3AiKSk7CgkmbW92CSgmRFdQKDI0LCJlc2kiKSwiZWN4Iik7CgkgIyZtb3YJKCZEV1AoMTYsImVzcCIpLCRFKTsKCSZhZGQJKCJlZGkiLCZEV1AoMjgsImVzaSIpKTsKCSAmbW92CSgmRFdQKDI0LCJlc3AiKSwiZWN4Iik7CgkmbW92CSgmRFdQKDI4LCJlc2kiKSwiZWRpIik7CgkgJm1vdgkoJkRXUCgyOCwiZXNwIiksImVkaSIpOwoJJm1vdgkoImVkaSIsJkRXUCg5Nis0LCJlc3AiKSk7CSMgaW5wCgoJJnZtb3ZkcWEJKCR0MywmUVdQKDY0LCRLMjU2KSk7Cgkmc3ViCSgkSzI1NiwzKjY0KTsJCQkjIHJld2luZCBLCgkmY21wCSgiZWRpIiwmRFdQKDk2KzgsImVzcCIpKTsJIyBhcmUgd2UgZG9uZSB5ZXQ/CgkmamIJKCZsYWJlbCgiZ3JhbmRfYXZ4IikpOwoKCSZtb3YJKCJlc3AiLCZEV1AoOTYrMTIsImVzcCIpKTsJIyByZXN0b3JlIHNwCgkmdnplcm9hbGwJKCk7CiZmdW5jdGlvbl9lbmRfQSgpOwoJCQkJCQlpZiAoJGF2eD4xKSB7CnN1YiBib2R5eF8wMF8xNSAoKSB7CQkJIyArMTAlCgkoCgknJnJvcngJKCJlY3giLCRFLDYpJywKCScmcm9yeAkoImVzaSIsJEUsMTEpJywKCSAnJm1vdgkoJm9mZigkZSksJEUpJywJCSMgc2F2ZSAkRSwgbW9kdWxvLXNjaGVkdWxlZAoJJyZyb3J4CSgiZWRpIiwkRSwyNSknLAoJJyZ4b3IJKCJlY3giLCJlc2kiKScsCgkgJyZhbmRuCSgiZXNpIiwkRSwmb2ZmKCRnKSknLAoJJyZ4b3IJKCJlY3giLCJlZGkiKScsCQkjIFNpZ21hMShlKQoJICcmYW5kCSgkRSwmb2ZmKCRmKSknLAoJICcmbW92CSgmb2ZmKCRhKSwkQUhbMF0pOycsCSMgc2F2ZSAkQSwgbW9kdWxvLXNjaGVkdWxlZAoJICcmb3IJKCRFLCJlc2kiKScsCQkjIFQgPSBDaChlLGYsZykKCgknJnJvcngJKCJlZGkiLCRBSFswXSwyKScsCgknJnJvcngJKCJlc2kiLCRBSFswXSwxMyknLAoJICcmbGVhCSgkRSwmRFdQKDAsJEUsImVjeCIpKScsCSMgVCArPSBTaWdtYTEoZSkKCScmcm9yeAkoImVjeCIsJEFIWzBdLDIyKScsCgknJnhvcgkoImVzaSIsImVkaSIpJywKCSAnJm1vdgkoImVkaSIsJm9mZigkYikpJywKCScmeG9yCSgiZWN4IiwiZXNpIiknLAkJIyBTaWdtYTAoYSkKCgkgJyZ4b3IJKCRBSFswXSwiZWRpIiknLAkjIGEgXj0gYiwgKGJeYykgaW4gbmV4dCByb3VuZAoJICcmYWRkCSgkRSwmb2ZmKCRoKSknLAkJIyBUICs9IGgKCSAnJmFuZAkoJEFIWzFdLCRBSFswXSknLAkjIChiXmMpICY9IChhXmIpCgkgJyZhZGQJKCRFLCZEV1AoMzIrNCooJGkmMTUpLCJlc3AiKSknLAkjIFQgKz0gS1tpXStYW2ldCgkgJyZ4b3IJKCRBSFsxXSwiZWRpIiknLAkjIGggPSBNYWooYSxiLGMpID0gQ2goYV5iLGMsYikKCgkgJyZhZGQJKCJlY3giLCRFKScsCQkjIGggKz0gVAoJICcmYWRkCSgkRSwmb2ZmKCRkKSknLAkJIyBkICs9IFQKCScmbGVhCSgkQUhbMV0sJkRXUCgwLCRBSFsxXSwiZWN4IikpOycuCSMgaCArPSBTaWdtYTAoYSkKCgknQEFIID0gcmV2ZXJzZShAQUgpOyAkaSsrOycJIyByb3RhdGUoYSxoKQoJKTsKfQoKJnNldF9sYWJlbCgiQVZYX0JNSSIsMzIpOwoJJmxlYQkoImVzcCIsJkRXUCgtOTYsImVzcCIpKTsKCSZ2emVyb2FsbAkoKTsKCSMgY29weSBjdHgtPmhbMC03XSB0byBBLEIsQyxELEUsRixHLEggb24gc3RhY2sKCSZtb3YJKCRBSFswXSwmRFdQKDAsImVzaSIpKTsKCSZtb3YJKCRBSFsxXSwmRFdQKDQsImVzaSIpKTsKCSZtb3YJKCJlY3giLCZEV1AoOCwiZXNpIikpOwoJJm1vdgkoImVkaSIsJkRXUCgxMiwiZXNpIikpOwoJIyZtb3YJKCZEV1AoMCwiZXNwIiksJEFIWzBdKTsKCSZtb3YJKCZEV1AoNCwiZXNwIiksJEFIWzFdKTsKCSZ4b3IJKCRBSFsxXSwiZWN4Iik7CQkJIyBtYWdpYwoJJm1vdgkoJkRXUCg4LCJlc3AiKSwiZWN4Iik7CgkmbW92CSgmRFdQKDEyLCJlc3AiKSwiZWRpIik7CgkmbW92CSgkRSwmRFdQKDE2LCJlc2kiKSk7CgkmbW92CSgiZWRpIiwmRFdQKDIwLCJlc2kiKSk7CgkmbW92CSgiZWN4IiwmRFdQKDI0LCJlc2kiKSk7CgkmbW92CSgiZXNpIiwmRFdQKDI4LCJlc2kiKSk7CgkjJm1vdgkoJkRXUCgxNiwiZXNwIiksJEUpOwoJJm1vdgkoJkRXUCgyMCwiZXNwIiksImVkaSIpOwoJJm1vdgkoImVkaSIsJkRXUCg5Nis0LCJlc3AiKSk7CSMgaW5wCgkmbW92CSgmRFdQKDI0LCJlc3AiKSwiZWN4Iik7CgkmbW92CSgmRFdQKDI4LCJlc3AiKSwiZXNpIik7Cgkmdm1vdmRxYQkoJHQzLCZRV1AoMjU2LCRLMjU2KSk7Cgkmam1wCSgmbGFiZWwoImdyYW5kX2F2eF9ibWkiKSk7Cgomc2V0X2xhYmVsKCJncmFuZF9hdnhfYm1pIiwzMik7CgkjIGxvYWQgaW5wdXQsIHJldmVyc2UgYnl0ZSBvcmRlciwgYWRkIEsyNTZbMC4uMTVdLCBzYXZlIHRvIHN0YWNrCgkmdm1vdmRxdQkoQFhbMF0sJlFXUCgwLCJlZGkiKSk7Cgkmdm1vdmRxdQkoQFhbMV0sJlFXUCgxNiwiZWRpIikpOwoJJnZtb3ZkcXUJKEBYWzJdLCZRV1AoMzIsImVkaSIpKTsKCSZ2bW92ZHF1CShAWFszXSwmUVdQKDQ4LCJlZGkiKSk7CgkmYWRkCQkoImVkaSIsNjQpOwoJJnZwc2h1ZmIJKEBYWzBdLEBYWzBdLCR0Myk7CgkmbW92CQkoJkRXUCg5Nis0LCJlc3AiKSwiZWRpIik7CgkmdnBzaHVmYgkoQFhbMV0sQFhbMV0sJHQzKTsKCSZ2cHNodWZiCShAWFsyXSxAWFsyXSwkdDMpOwoJJnZwYWRkZAkJKCR0MCxAWFswXSwmUVdQKDAsJEsyNTYpKTsKCSZ2cHNodWZiCShAWFszXSxAWFszXSwkdDMpOwoJJnZwYWRkZAkJKCR0MSxAWFsxXSwmUVdQKDE2LCRLMjU2KSk7CgkmdnBhZGRkCQkoJHQyLEBYWzJdLCZRV1AoMzIsJEsyNTYpKTsKCSZ2cGFkZGQJCSgkdDMsQFhbM10sJlFXUCg0OCwkSzI1NikpOwoJJnZtb3ZkcWEJKCZRV1AoMzIrMCwiZXNwIiksJHQwKTsKCSZ2bW92ZHFhCSgmUVdQKDMyKzE2LCJlc3AiKSwkdDEpOwoJJnZtb3ZkcWEJKCZRV1AoMzIrMzIsImVzcCIpLCR0Mik7Cgkmdm1vdmRxYQkoJlFXUCgzMis0OCwiZXNwIiksJHQzKTsKCSZqbXAJCSgmbGFiZWwoImF2eF9ibWlfMDBfNDciKSk7Cgomc2V0X2xhYmVsKCJhdnhfYm1pXzAwXzQ3IiwxNik7CgkmYWRkCQkoJEsyNTYsNjQpOwoKICAgIGZvciAoJGk9MCwkaj0wOyAkajw0OyAkaisrKSB7CgkmQVZYXzAwXzQ3KCRqLFwmYm9keXhfMDBfMTUsQFgpOwoJcHVzaChAWCxzaGlmdChAWCkpOwkJIyByb3RhdGUoQFgpCiAgICB9CgkmY21wCSgmRFdQKDE2KiRqLCRLMjU2KSwweDAwMDEwMjAzKTsKCSZqbmUJKCZsYWJlbCgiYXZ4X2JtaV8wMF80NyIpKTsKCiAgICBmb3IgKCRpPTA7ICRpPDE2OyApIHsKCWZvcmVhY2goYm9keXhfMDBfMTUoKSkgeyBldmFsOyB9CiAgICB9CgoJJm1vdgkoImVzaSIsJkRXUCg5NiwiZXNwIikpOwkjY3R4CgkJCQkJIyZtb3YJKCRBSFswXSwmRFdQKDAsImVzcCIpKTsKCSZ4b3IJKCRBSFsxXSwiZWRpIik7CQkjJm1vdgkoJEFIWzFdLCZEV1AoNCwiZXNwIikpOwoJCQkJCSMmbW92CSgiZWRpIiwgJkRXUCg4LCJlc3AiKSk7CgkmbW92CSgiZWN4IiwmRFdQKDEyLCJlc3AiKSk7CgkmYWRkCSgkQUhbMF0sJkRXUCgwLCJlc2kiKSk7CgkmYWRkCSgkQUhbMV0sJkRXUCg0LCJlc2kiKSk7CgkmYWRkCSgiZWRpIiwmRFdQKDgsImVzaSIpKTsKCSZhZGQJKCJlY3giLCZEV1AoMTIsImVzaSIpKTsKCSZtb3YJKCZEV1AoMCwiZXNpIiksJEFIWzBdKTsKCSZtb3YJKCZEV1AoNCwiZXNpIiksJEFIWzFdKTsKCSZtb3YJKCZEV1AoOCwiZXNpIiksImVkaSIpOwoJJm1vdgkoJkRXUCgxMiwiZXNpIiksImVjeCIpOwoJICMmbW92CSgmRFdQKDAsImVzcCIpLCRBSFswXSk7CgkgJm1vdgkoJkRXUCg0LCJlc3AiKSwkQUhbMV0pOwoJICZ4b3IJKCRBSFsxXSwiZWRpIik7CQkJIyBtYWdpYwoJICZtb3YJKCZEV1AoOCwiZXNwIiksImVkaSIpOwoJICZtb3YJKCZEV1AoMTIsImVzcCIpLCJlY3giKTsKCSMmbW92CSgkRSwmRFdQKDE2LCJlc3AiKSk7CgkmbW92CSgiZWRpIiwmRFdQKDIwLCJlc3AiKSk7CgkmbW92CSgiZWN4IiwmRFdQKDI0LCJlc3AiKSk7CgkmYWRkCSgkRSwmRFdQKDE2LCJlc2kiKSk7CgkmYWRkCSgiZWRpIiwmRFdQKDIwLCJlc2kiKSk7CgkmYWRkCSgiZWN4IiwmRFdQKDI0LCJlc2kiKSk7CgkmbW92CSgmRFdQKDE2LCJlc2kiKSwkRSk7CgkmbW92CSgmRFdQKDIwLCJlc2kiKSwiZWRpIik7CgkgJm1vdgkoJkRXUCgyMCwiZXNwIiksImVkaSIpOwoJJm1vdgkoImVkaSIsJkRXUCgyOCwiZXNwIikpOwoJJm1vdgkoJkRXUCgyNCwiZXNpIiksImVjeCIpOwoJICMmbW92CSgmRFdQKDE2LCJlc3AiKSwkRSk7CgkmYWRkCSgiZWRpIiwmRFdQKDI4LCJlc2kiKSk7CgkgJm1vdgkoJkRXUCgyNCwiZXNwIiksImVjeCIpOwoJJm1vdgkoJkRXUCgyOCwiZXNpIiksImVkaSIpOwoJICZtb3YJKCZEV1AoMjgsImVzcCIpLCJlZGkiKTsKCSZtb3YJKCJlZGkiLCZEV1AoOTYrNCwiZXNwIikpOwkjIGlucAoKCSZ2bW92ZHFhCSgkdDMsJlFXUCg2NCwkSzI1NikpOwoJJnN1YgkoJEsyNTYsMyo2NCk7CQkJIyByZXdpbmQgSwoJJmNtcAkoImVkaSIsJkRXUCg5Nis4LCJlc3AiKSk7CSMgYXJlIHdlIGRvbmUgeWV0PwoJJmpiCSgmbGFiZWwoImdyYW5kX2F2eF9ibWkiKSk7CgoJJm1vdgkoImVzcCIsJkRXUCg5NisxMiwiZXNwIikpOwkjIHJlc3RvcmUgc3AKCSZ2emVyb2FsbAkoKTsKJmZ1bmN0aW9uX2VuZF9BKCk7CgkJCQkJCX0KCQkJCQkJfQoJCQkJCQl9fX0KJmZ1bmN0aW9uX2VuZF9CKCJzaGEyNTZfYmxvY2tfZGF0YV9vcmRlciIpOwoKJmFzbV9maW5pc2goKTsK