I2luY2x1ZGUgImFybV9hcmNoLmgiCgoudGV4dAouY29kZQkzMgoKLnR5cGUJcmVtXzRiaXQsJW9iamVjdAouYWxpZ24JNQpyZW1fNGJpdDoKLnNob3J0CTB4MDAwMCwweDFDMjAsMHgzODQwLDB4MjQ2MAouc2hvcnQJMHg3MDgwLDB4NkNBMCwweDQ4QzAsMHg1NEUwCi5zaG9ydAkweEUxMDAsMHhGRDIwLDB4RDk0MCwweEM1NjAKLnNob3J0CTB4OTE4MCwweDhEQTAsMHhBOUMwLDB4QjVFMAouc2l6ZQlyZW1fNGJpdCwuLXJlbV80Yml0CgoudHlwZQlyZW1fNGJpdF9nZXQsJWZ1bmN0aW9uCnJlbV80Yml0X2dldDoKCXN1YglyMixwYywjOAoJc3ViCXIyLHIyLCMzMglAICZyZW1fNGJpdAoJYgkuTHJlbV80Yml0X2dvdAoJbm9wCi5zaXplCXJlbV80Yml0X2dldCwuLXJlbV80Yml0X2dldAoKLmdsb2JhbAlnY21fZ2hhc2hfNGJpdAoudHlwZQlnY21fZ2hhc2hfNGJpdCwlZnVuY3Rpb24KZ2NtX2doYXNoXzRiaXQ6CglzdWIJcjEyLHBjLCM4CglhZGQJcjMscjIscjMJCUAgcjMgdG8gcG9pbnQgYXQgdGhlIGVuZAoJc3RtZGIJc3AhLHtyMy1yMTEsbHJ9CQlAIHNhdmUgcjMvZW5kIHRvbwoJc3ViCXIxMixyMTIsIzQ4CQlAICZyZW1fNGJpdAoKCWxkbWlhCXIxMix7cjQtcjExfQkJQCBjb3B5IHJlbV80Yml0IC4uLgoJc3RtZGIJc3AhLHtyNC1yMTF9CQlAIC4uLiB0byBzdGFjawoKCWxkcmIJcjEyLFtyMiwjMTVdCglsZHJiCXIxNCxbcjAsIzE1XQouTG91dGVyOgoJZW9yCXIxMixyMTIscjE0CglhbmQJcjE0LHIxMiwjMHhmMAoJYW5kCXIxMixyMTIsIzB4MGYKCW1vdglyMywjMTQKCglhZGQJcjcscjEscjEyLGxzbCM0CglsZG1pYQlyNyx7cjQtcjd9CUAgbG9hZCBIdGJsW25sb10KCWFkZAlyMTEscjEscjE0CglsZHJiCXIxMixbcjIsIzE0XQoKCWFuZAlyMTQscjQsIzB4ZgkJQCByZW0KCWxkbWlhCXIxMSx7cjgtcjExfQlAIGxvYWQgSHRibFtuaGldCglhZGQJcjE0LHIxNCxyMTQKCWVvcglyNCxyOCxyNCxsc3IjNAoJbGRyaAlyOCxbc3AscjE0XQkJQCByZW1fNGJpdFtyZW1dCgllb3IJcjQscjQscjUsbHNsIzI4CglsZHJiCXIxNCxbcjAsIzE0XQoJZW9yCXI1LHI5LHI1LGxzciM0Cgllb3IJcjUscjUscjYsbHNsIzI4Cgllb3IJcjYscjEwLHI2LGxzciM0Cgllb3IJcjYscjYscjcsbHNsIzI4Cgllb3IJcjcscjExLHI3LGxzciM0Cgllb3IJcjEyLHIxMixyMTQKCWFuZAlyMTQscjEyLCMweGYwCglhbmQJcjEyLHIxMiwjMHgwZgoJZW9yCXI3LHI3LHI4LGxzbCMxNgoKLkxpbm5lcjoKCWFkZAlyMTEscjEscjEyLGxzbCM0CglhbmQJcjEyLHI0LCMweGYJCUAgcmVtCglzdWJzCXIzLHIzLCMxCglhZGQJcjEyLHIxMixyMTIKCWxkbWlhCXIxMSx7cjgtcjExfQlAIGxvYWQgSHRibFtubG9dCgllb3IJcjQscjgscjQsbHNyIzQKCWVvcglyNCxyNCxyNSxsc2wjMjgKCWVvcglyNSxyOSxyNSxsc3IjNAoJZW9yCXI1LHI1LHI2LGxzbCMyOAoJbGRyaAlyOCxbc3AscjEyXQkJQCByZW1fNGJpdFtyZW1dCgllb3IJcjYscjEwLHI2LGxzciM0CglsZHJwbGIJcjEyLFtyMixyM10KCWVvcglyNixyNixyNyxsc2wjMjgKCWVvcglyNyxyMTEscjcsbHNyIzQKCglhZGQJcjExLHIxLHIxNAoJYW5kCXIxNCxyNCwjMHhmCQlAIHJlbQoJZW9yCXI3LHI3LHI4LGxzbCMxNglAIF49IHJlbV80Yml0W3JlbV0KCWFkZAlyMTQscjE0LHIxNAoJbGRtaWEJcjExLHtyOC1yMTF9CUAgbG9hZCBIdGJsW25oaV0KCWVvcglyNCxyOCxyNCxsc3IjNAoJbGRycGxiCXI4LFtyMCxyM10KCWVvcglyNCxyNCxyNSxsc2wjMjgKCWVvcglyNSxyOSxyNSxsc3IjNAoJbGRyaAlyOSxbc3AscjE0XQoJZW9yCXI1LHI1LHI2LGxzbCMyOAoJZW9yCXI2LHIxMCxyNixsc3IjNAoJZW9yCXI2LHI2LHI3LGxzbCMyOAoJZW9ycGwJcjEyLHIxMixyOAoJZW9yCXI3LHIxMSxyNyxsc3IjNAoJYW5kcGwJcjE0LHIxMiwjMHhmMAoJYW5kcGwJcjEyLHIxMiwjMHgwZgoJZW9yCXI3LHI3LHI5LGxzbCMxNglAIF49IHJlbV80Yml0W3JlbV0KCWJwbAkuTGlubmVyCgoJbGRyCXIzLFtzcCwjMzJdCQlAIHJlLWxvYWQgcjMvZW5kCglhZGQJcjIscjIsIzE2Cgltb3YJcjE0LHI0CiNpZiBfX0FSTV9BUkNIX18+PTcgJiYgZGVmaW5lZChfX0FSTUVMX18pCglyZXYJcjQscjQKCXN0cglyNCxbcjAsIzEyXQojZWxpZiBkZWZpbmVkKF9fQVJNRUJfXykKCXN0cglyNCxbcjAsIzEyXQojZWxzZQoJbW92CXI5LHI0LGxzciM4CglzdHJiCXI0LFtyMCwjMTIrM10KCW1vdglyMTAscjQsbHNyIzE2CglzdHJiCXI5LFtyMCwjMTIrMl0KCW1vdglyMTEscjQsbHNyIzI0CglzdHJiCXIxMCxbcjAsIzEyKzFdCglzdHJiCXIxMSxbcjAsIzEyXQojZW5kaWYKCWNtcAlyMixyMwojaWYgX19BUk1fQVJDSF9fPj03ICYmIGRlZmluZWQoX19BUk1FTF9fKQoJcmV2CXI1LHI1CglzdHIJcjUsW3IwLCM4XQojZWxpZiBkZWZpbmVkKF9fQVJNRUJfXykKCXN0cglyNSxbcjAsIzhdCiNlbHNlCgltb3YJcjkscjUsbHNyIzgKCXN0cmIJcjUsW3IwLCM4KzNdCgltb3YJcjEwLHI1LGxzciMxNgoJc3RyYglyOSxbcjAsIzgrMl0KCW1vdglyMTEscjUsbHNyIzI0CglzdHJiCXIxMCxbcjAsIzgrMV0KCXN0cmIJcjExLFtyMCwjOF0KI2VuZGlmCglsZHJuZWIJcjEyLFtyMiwjMTVdCiNpZiBfX0FSTV9BUkNIX18+PTcgJiYgZGVmaW5lZChfX0FSTUVMX18pCglyZXYJcjYscjYKCXN0cglyNixbcjAsIzRdCiNlbGlmIGRlZmluZWQoX19BUk1FQl9fKQoJc3RyCXI2LFtyMCwjNF0KI2Vsc2UKCW1vdglyOSxyNixsc3IjOAoJc3RyYglyNixbcjAsIzQrM10KCW1vdglyMTAscjYsbHNyIzE2CglzdHJiCXI5LFtyMCwjNCsyXQoJbW92CXIxMSxyNixsc3IjMjQKCXN0cmIJcjEwLFtyMCwjNCsxXQoJc3RyYglyMTEsW3IwLCM0XQojZW5kaWYKCQojaWYgX19BUk1fQVJDSF9fPj03ICYmIGRlZmluZWQoX19BUk1FTF9fKQoJcmV2CXI3LHI3CglzdHIJcjcsW3IwLCMwXQojZWxpZiBkZWZpbmVkKF9fQVJNRUJfXykKCXN0cglyNyxbcjAsIzBdCiNlbHNlCgltb3YJcjkscjcsbHNyIzgKCXN0cmIJcjcsW3IwLCMwKzNdCgltb3YJcjEwLHI3LGxzciMxNgoJc3RyYglyOSxbcjAsIzArMl0KCW1vdglyMTEscjcsbHNyIzI0CglzdHJiCXIxMCxbcjAsIzArMV0KCXN0cmIJcjExLFtyMCwjMF0KI2VuZGlmCgkKCWJuZQkuTG91dGVyCgoJYWRkCXNwLHNwLCMzNgojaWYgX19BUk1fQVJDSF9fPj01CglsZG1pYQlzcCEse3I0LXIxMSxwY30KI2Vsc2UKCWxkbWlhCXNwISx7cjQtcjExLGxyfQoJdHN0CWxyLCMxCgltb3ZlcQlwYyxscgkJCUAgYmUgYmluYXJ5IGNvbXBhdGlibGUgd2l0aCBWNCwgeWV0Cgkud29yZAkweGUxMmZmZjFlCQkJQCBpbnRlcm9wZXJhYmxlIHdpdGggVGh1bWIgSVNBOi0pCiNlbmRpZgouc2l6ZQlnY21fZ2hhc2hfNGJpdCwuLWdjbV9naGFzaF80Yml0CgouZ2xvYmFsCWdjbV9nbXVsdF80Yml0Ci50eXBlCWdjbV9nbXVsdF80Yml0LCVmdW5jdGlvbgpnY21fZ211bHRfNGJpdDoKCXN0bWRiCXNwISx7cjQtcjExLGxyfQoJbGRyYglyMTIsW3IwLCMxNV0KCWIJcmVtXzRiaXRfZ2V0Ci5McmVtXzRiaXRfZ290OgoJYW5kCXIxNCxyMTIsIzB4ZjAKCWFuZAlyMTIscjEyLCMweDBmCgltb3YJcjMsIzE0CgoJYWRkCXI3LHIxLHIxMixsc2wjNAoJbGRtaWEJcjcse3I0LXI3fQlAIGxvYWQgSHRibFtubG9dCglsZHJiCXIxMixbcjAsIzE0XQoKCWFkZAlyMTEscjEscjE0CglhbmQJcjE0LHI0LCMweGYJCUAgcmVtCglsZG1pYQlyMTEse3I4LXIxMX0JQCBsb2FkIEh0YmxbbmhpXQoJYWRkCXIxNCxyMTQscjE0Cgllb3IJcjQscjgscjQsbHNyIzQKCWxkcmgJcjgsW3IyLHIxNF0JQCByZW1fNGJpdFtyZW1dCgllb3IJcjQscjQscjUsbHNsIzI4Cgllb3IJcjUscjkscjUsbHNyIzQKCWVvcglyNSxyNSxyNixsc2wjMjgKCWVvcglyNixyMTAscjYsbHNyIzQKCWVvcglyNixyNixyNyxsc2wjMjgKCWVvcglyNyxyMTEscjcsbHNyIzQKCWFuZAlyMTQscjEyLCMweGYwCgllb3IJcjcscjcscjgsbHNsIzE2CglhbmQJcjEyLHIxMiwjMHgwZgoKLkxvb3A6CglhZGQJcjExLHIxLHIxMixsc2wjNAoJYW5kCXIxMixyNCwjMHhmCQlAIHJlbQoJc3VicwlyMyxyMywjMQoJYWRkCXIxMixyMTIscjEyCglsZG1pYQlyMTEse3I4LXIxMX0JQCBsb2FkIEh0YmxbbmxvXQoJZW9yCXI0LHI4LHI0LGxzciM0Cgllb3IJcjQscjQscjUsbHNsIzI4Cgllb3IJcjUscjkscjUsbHNyIzQKCWVvcglyNSxyNSxyNixsc2wjMjgKCWxkcmgJcjgsW3IyLHIxMl0JQCByZW1fNGJpdFtyZW1dCgllb3IJcjYscjEwLHI2LGxzciM0CglsZHJwbGIJcjEyLFtyMCxyM10KCWVvcglyNixyNixyNyxsc2wjMjgKCWVvcglyNyxyMTEscjcsbHNyIzQKCglhZGQJcjExLHIxLHIxNAoJYW5kCXIxNCxyNCwjMHhmCQlAIHJlbQoJZW9yCXI3LHI3LHI4LGxzbCMxNglAIF49IHJlbV80Yml0W3JlbV0KCWFkZAlyMTQscjE0LHIxNAoJbGRtaWEJcjExLHtyOC1yMTF9CUAgbG9hZCBIdGJsW25oaV0KCWVvcglyNCxyOCxyNCxsc3IjNAoJZW9yCXI0LHI0LHI1LGxzbCMyOAoJZW9yCXI1LHI5LHI1LGxzciM0CglsZHJoCXI4LFtyMixyMTRdCUAgcmVtXzRiaXRbcmVtXQoJZW9yCXI1LHI1LHI2LGxzbCMyOAoJZW9yCXI2LHIxMCxyNixsc3IjNAoJZW9yCXI2LHI2LHI3LGxzbCMyOAoJZW9yCXI3LHIxMSxyNyxsc3IjNAoJYW5kcGwJcjE0LHIxMiwjMHhmMAoJYW5kcGwJcjEyLHIxMiwjMHgwZgoJZW9yCXI3LHI3LHI4LGxzbCMxNglAIF49IHJlbV80Yml0W3JlbV0KCWJwbAkuTG9vcAojaWYgX19BUk1fQVJDSF9fPj03ICYmIGRlZmluZWQoX19BUk1FTF9fKQoJcmV2CXI0LHI0CglzdHIJcjQsW3IwLCMxMl0KI2VsaWYgZGVmaW5lZChfX0FSTUVCX18pCglzdHIJcjQsW3IwLCMxMl0KI2Vsc2UKCW1vdglyOSxyNCxsc3IjOAoJc3RyYglyNCxbcjAsIzEyKzNdCgltb3YJcjEwLHI0LGxzciMxNgoJc3RyYglyOSxbcjAsIzEyKzJdCgltb3YJcjExLHI0LGxzciMyNAoJc3RyYglyMTAsW3IwLCMxMisxXQoJc3RyYglyMTEsW3IwLCMxMl0KI2VuZGlmCgkKI2lmIF9fQVJNX0FSQ0hfXz49NyAmJiBkZWZpbmVkKF9fQVJNRUxfXykKCXJldglyNSxyNQoJc3RyCXI1LFtyMCwjOF0KI2VsaWYgZGVmaW5lZChfX0FSTUVCX18pCglzdHIJcjUsW3IwLCM4XQojZWxzZQoJbW92CXI5LHI1LGxzciM4CglzdHJiCXI1LFtyMCwjOCszXQoJbW92CXIxMCxyNSxsc3IjMTYKCXN0cmIJcjksW3IwLCM4KzJdCgltb3YJcjExLHI1LGxzciMyNAoJc3RyYglyMTAsW3IwLCM4KzFdCglzdHJiCXIxMSxbcjAsIzhdCiNlbmRpZgoJCiNpZiBfX0FSTV9BUkNIX18+PTcgJiYgZGVmaW5lZChfX0FSTUVMX18pCglyZXYJcjYscjYKCXN0cglyNixbcjAsIzRdCiNlbGlmIGRlZmluZWQoX19BUk1FQl9fKQoJc3RyCXI2LFtyMCwjNF0KI2Vsc2UKCW1vdglyOSxyNixsc3IjOAoJc3RyYglyNixbcjAsIzQrM10KCW1vdglyMTAscjYsbHNyIzE2CglzdHJiCXI5LFtyMCwjNCsyXQoJbW92CXIxMSxyNixsc3IjMjQKCXN0cmIJcjEwLFtyMCwjNCsxXQoJc3RyYglyMTEsW3IwLCM0XQojZW5kaWYKCQojaWYgX19BUk1fQVJDSF9fPj03ICYmIGRlZmluZWQoX19BUk1FTF9fKQoJcmV2CXI3LHI3CglzdHIJcjcsW3IwLCMwXQojZWxpZiBkZWZpbmVkKF9fQVJNRUJfXykKCXN0cglyNyxbcjAsIzBdCiNlbHNlCgltb3YJcjkscjcsbHNyIzgKCXN0cmIJcjcsW3IwLCMwKzNdCgltb3YJcjEwLHI3LGxzciMxNgoJc3RyYglyOSxbcjAsIzArMl0KCW1vdglyMTEscjcsbHNyIzI0CglzdHJiCXIxMCxbcjAsIzArMV0KCXN0cmIJcjExLFtyMCwjMF0KI2VuZGlmCgkKI2lmIF9fQVJNX0FSQ0hfXz49NQoJbGRtaWEJc3AhLHtyNC1yMTEscGN9CiNlbHNlCglsZG1pYQlzcCEse3I0LXIxMSxscn0KCXRzdAlsciwjMQoJbW92ZXEJcGMsbHIJCQlAIGJlIGJpbmFyeSBjb21wYXRpYmxlIHdpdGggVjQsIHlldAoJLndvcmQJMHhlMTJmZmYxZQkJCUAgaW50ZXJvcGVyYWJsZSB3aXRoIFRodW1iIElTQTotKQojZW5kaWYKLnNpemUJZ2NtX2dtdWx0XzRiaXQsLi1nY21fZ211bHRfNGJpdAojaWYgX19BUk1fQVJDSF9fPj03Ci5mcHUJbmVvbgoKLmdsb2JhbAlnY21fZ211bHRfbmVvbgoudHlwZQlnY21fZ211bHRfbmVvbiwlZnVuY3Rpb24KLmFsaWduCTQKZ2NtX2dtdWx0X25lb246CglzdWIJCXIxLCMxNgkJQCBwb2ludCBhdCBIIGluIEdDTTEyOF9DVFgKCXZsZDEuNjQJCWQyOSxbcjAsOjY0XSFAIGxvYWQgWGkKCXZtb3YuaTMyCWQ1LCMweGUxCQlAIG91ciBpcnJlZHVjaWJsZSBwb2x5bm9taWFsCgl2bGQxLjY0CQlkMjgsW3IwLDo2NF0hCgl2c2hyLnU2NAlkNSwjMzIKCXZsZG1pYQkJcjEse2QwLWQxfQlAIGxvYWQgSAoJdmVvcgkJcTEyLHExMgojaWZkZWYgX19BUk1FTF9fCgl2cmV2NjQuOAlxMTQscTE0CiNlbmRpZgoJdmVvcgkJcTEzLHExMwoJdmVvcgkJcTExLHExMQoJbW92CQlyMSwjMTYKCXZlb3IJCXExMCxxMTAKCW1vdgkJcjMsIzE2Cgl2ZW9yCQlkMixkMgoJdmR1cC44CQlkNCxkMjhbMF0JQCBicm9hZGNhc3QgbG93ZXN0IGJ5dGUKCWIJCS5MaW5uZXJfbmVvbgouc2l6ZQlnY21fZ211bHRfbmVvbiwuLWdjbV9nbXVsdF9uZW9uCgouZ2xvYmFsCWdjbV9naGFzaF9uZW9uCi50eXBlCWdjbV9naGFzaF9uZW9uLCVmdW5jdGlvbgouYWxpZ24JNApnY21fZ2hhc2hfbmVvbjoKCXZsZDEuNjQJCWQyMSxbcjAsOjY0XSEJQCBsb2FkIFhpCgl2bW92LmkzMglkNSwjMHhlMQkJQCBvdXIgaXJyZWR1Y2libGUgcG9seW5vbWlhbAoJdmxkMS42NAkJZDIwLFtyMCw6NjRdIQoJdnNoci51NjQJZDUsIzMyCgl2bGRtaWEJCXIwLHtkMC1kMX0JCUAgbG9hZCBICgl2ZW9yCQlxMTIscTEyCglub3AKI2lmZGVmIF9fQVJNRUxfXwoJdnJldjY0LjgJcTEwLHExMAojZW5kaWYKLkxvdXRlcl9uZW9uOgoJdmxkMS42NAkJZDI5LFtyMl0hCUAgbG9hZCBpbnAKCXZlb3IJCXExMyxxMTMKCXZsZDEuNjQJCWQyOCxbcjJdIQoJdmVvcgkJcTExLHExMQoJbW92CQlyMSwjMTYKI2lmZGVmIF9fQVJNRUxfXwoJdnJldjY0LjgJcTE0LHExNAojZW5kaWYKCXZlb3IJCWQyLGQyCgl2ZW9yCQlxMTQscTEwCQkJQCBpbnBePVhpCgl2ZW9yCQlxMTAscTEwCgl2ZHVwLjgJCWQ0LGQyOFswXQlAIGJyb2FkY2FzdCBsb3dlc3QgYnl0ZQouTGlubmVyX25lb246CglzdWJzCQlyMSxyMSwjMQoJdm11bGwucDgJcTksZDEsZDQJCUAgSC5sb7dYaVtpXQoJdm11bGwucDgJcTgsZDAsZDQJCUAgSC5oabdYaVtpXQoJdmV4dC44CQlxMTQscTEyLCMxCQlAIElOPj49OAoKCXZlb3IJCXExMCxxMTMJCUAgbW9kdWxvLXNjaGVkdWxlZCBwYXJ0Cgl2c2hsLmk2NAlkMjIsIzQ4Cgl2ZHVwLjgJCWQ0LGQyOFswXQlAIGJyb2FkY2FzdCBsb3dlc3QgYnl0ZQoJdmVvcgkJZDMsZDE4LGQyMAoKCXZlb3IJCWQyMSxkMjIKCXZ1enAuOAkJcTkscTgKCXZzbGkuOAkJZDIsZDMsIzEJCUAgY29tcG9zZSB0aGUgImNhcnJ5IiBieXRlCgl2ZXh0LjgJCXExMCxxMTIsIzEJCUAgWj4+PTgKCgl2bXVsbC5wOAlxMTEsZDIsZDUJCUAgImNhcnJ5IrcweGUxCgl2c2hyLnU4CQlkMixkMywjNwkJQCBzYXZlIFoncyBib3R0b20gYml0Cgl2ZXh0LjgJCXExMyxxOSxxMTIsIzEJQCBRbG8+Pj04Cgl2ZW9yCQlxMTAscTgKCWJuZQkJLkxpbm5lcl9uZW9uCgoJdmVvcgkJcTEwLHExMwkJQCBtb2R1bG8tc2NoZWR1bGVkIGFydGVmYWN0Cgl2c2hsLmk2NAlkMjIsIzQ4Cgl2ZW9yCQlkMjEsZDIyCgoJQCBmaW5hbGl6YXRpb24sIG5vcm1hbGl6ZSBaOlpvCgl2YW5kCQlkMixkNQkJQCBzdWZmaWNlcyB0byBtYXNrIHRoZSBiaXQKCXZzaHIudTY0CWQzLGQyMCwjNjMKCXZzaGwuaTY0CXExMCwjMQoJc3VicwkJcjMsIzE2Cgl2b3JyCQlxMTAscTEJCUAgWj1aOlpvPDwxCglibmUJCS5Mb3V0ZXJfbmVvbgoKI2lmZGVmIF9fQVJNRUxfXwoJdnJldjY0LjgJcTEwLHExMAojZW5kaWYKCXN1YgkJcjAsIzE2CQoJdnN0MS42NAkJZDIxLFtyMCw6NjRdIQlAIHdyaXRlIG91dCBYaQoJdnN0MS42NAkJZDIwLFtyMCw6NjRdCgoJLndvcmQJMHhlMTJmZmYxZQouc2l6ZQlnY21fZ2hhc2hfbmVvbiwuLWdjbV9naGFzaF9uZW9uCiNlbmRpZgouYXNjaXogICJHSEFTSCBmb3IgQVJNdjQvTkVPTiwgQ1JZUFRPR0FNUyBieSA8YXBwcm9Ab3BlbnNzbC5vcmc+IgouYWxpZ24gIDIK