ZGlmZiAtLWdpdCBhL3NyYy9kaWdyYXBoLmMgYi9zcmMvZGlncmFwaC5jCmluZGV4IGU3MDdiMDUuLjhhNDZiNWIgMTAwNjQ0Ci0tLSBhL3NyYy9kaWdyYXBoLmMKKysrIGIvc3JjL2RpZ3JhcGguYwpAQCAtMjgsNyArMjgsNyBAQAogICAgIHJlc3VsdF9UCXJlc3VsdDsKIH0gZGlncl9UOwogCi1zdGF0aWMgdm9pZCBwcmludGRpZ3JhcGgoZGlncl9UICopOworc3RhdGljIHZvaWQgcHJpbnRkaWdyYXBoKGRpZ3JfVCAqZHAsIHJlc3VsdF9UICpwcmV2aW91cyk7CiAKIC8qIGRpZ3JhcGhzIGFkZGVkIGJ5IHRoZSB1c2VyICovCiBzdGF0aWMgZ2FycmF5X1QJdXNlcl9kaWdyYXBocyA9IHswLCAwLCAoaW50KXNpemVvZihkaWdyX1QpLCAxMCwgTlVMTH07CkBAIC02NDMsMTAxICs2NDMsMTU0IEBACiAJeydQJywgJ00nLCAweDllfSwKIAl7J0EnLCAnQycsIDB4OWZ9LAogCXsnTicsICdTJywgMHhhMH0sCisjZGVmaW5lIERHX1NUQVJUX0xBVElOIDB4YTEKIAl7JyEnLCAnSScsIDB4YTF9LAorCXsnficsICchJywgMHhhMX0sCS8vIKEgVmltIDUueCBjb21wYXRpYmxlCiAJeydDJywgJ3QnLCAweGEyfSwKKwl7J2MnLCAnfCcsIDB4YTJ9LAkvLyCiIFZpbSA1LnggY29tcGF0aWJsZQogCXsnUCcsICdkJywgMHhhM30sCisJeyckJywgJyQnLCAweGEzfSwJLy8goyBWaW0gNS54IGNvbXBhdGlibGUKIAl7J0MnLCAndScsIDB4YTR9LAorCXsnbycsICd4JywgMHhhNH0sCS8vIKQgVmltIDUueCBjb21wYXRpYmxlCiAJeydZJywgJ2UnLCAweGE1fSwKKwl7J1knLCAnLScsIDB4YTV9LAkvLyClIFZpbSA1LnggY29tcGF0aWJsZQogCXsnQicsICdCJywgMHhhNn0sCisJeyd8JywgJ3wnLCAweGE2fSwJLy8gpiBWaW0gNS54IGNvbXBhdGlibGUKIAl7J1MnLCAnRScsIDB4YTd9LAogCXsnXCcnLCAnOicsIDB4YTh9LAogCXsnQycsICdvJywgMHhhOX0sCisJeydjJywgJ08nLCAweGE5fSwJLy8gqSBWaW0gNS54IGNvbXBhdGlibGUKIAl7Jy0nLCAnYScsIDB4YWF9LAogCXsnPCcsICc8JywgMHhhYn0sCiAJeydOJywgJ08nLCAweGFjfSwKKwl7Jy0nLCAnLCcsIDB4YWN9LAkvLyCsIFZpbSA1LnggY29tcGF0aWJsZQogCXsnLScsICctJywgMHhhZH0sCiAJeydSJywgJ2cnLCAweGFlfSwKIAl7J1wnJywgJ20nLCAweGFmfSwKKwl7Jy0nLCAnPScsIDB4YWZ9LAkvLyCvIFZpbSA1LnggY29tcGF0aWJsZQogCXsnRCcsICdHJywgMHhiMH0sCisJeyd+JywgJ28nLCAweGIwfSwJLy8gsCBWaW0gNS54IGNvbXBhdGlibGUKIAl7JysnLCAnLScsIDB4YjF9LAogCXsnMicsICdTJywgMHhiMn0sCisJeycyJywgJzInLCAweGIyfSwJLy8gsiBWaW0gNS54IGNvbXBhdGlibGUKIAl7JzMnLCAnUycsIDB4YjN9LAorCXsnMycsICczJywgMHhiM30sCS8vILMgVmltIDUueCBjb21wYXRpYmxlCiAJeydcJycsICdcJycsIDB4YjR9LAogCXsnTScsICd5JywgMHhiNX0sCiAJeydQJywgJ0knLCAweGI2fSwKKwl7J3AnLCAncCcsIDB4YjZ9LAkvLyC2IFZpbSA1LnggY29tcGF0aWJsZQogCXsnLicsICdNJywgMHhiN30sCisJeyd+JywgJy4nLCAweGI3fSwJLy8gtyBWaW0gNS54IGNvbXBhdGlibGUKIAl7J1wnJywgJywnLCAweGI4fSwKIAl7JzEnLCAnUycsIDB4Yjl9LAorCXsnMScsICcxJywgMHhiOX0sCS8vILkgVmltIDUueCBjb21wYXRpYmxlCiAJeyctJywgJ28nLCAweGJhfSwKIAl7Jz4nLCAnPicsIDB4YmJ9LAogCXsnMScsICc0JywgMHhiY30sCiAJeycxJywgJzInLCAweGJkfSwKIAl7JzMnLCAnNCcsIDB4YmV9LAogCXsnPycsICdJJywgMHhiZn0sCisJeyd+JywgJz8nLCAweGJmfSwJLy8gvyBWaW0gNS54IGNvbXBhdGlibGUKIAl7J0EnLCAnIScsIDB4YzB9LAorCXsnQScsICdgJywgMHhjMH0sCS8vIMAgVmltIDUueCBjb21wYXRpYmxlCiAJeydBJywgJ1wnJywgMHhjMX0sCiAJeydBJywgJz4nLCAweGMyfSwKKwl7J0EnLCAnXicsIDB4YzJ9LAkvLyDCIFZpbSA1LnggY29tcGF0aWJsZQogCXsnQScsICc/JywgMHhjM30sCisJeydBJywgJ34nLCAweGMzfSwJLy8gwyBWaW0gNS54IGNvbXBhdGlibGUKIAl7J0EnLCAnOicsIDB4YzR9LAorCXsnQScsICciJywgMHhjNH0sCS8vIMQgVmltIDUueCBjb21wYXRpYmxlCiAJeydBJywgJ0EnLCAweGM1fSwKKwl7J0EnLCAnQCcsIDB4YzV9LAkvLyDFIFZpbSA1LnggY29tcGF0aWJsZQogCXsnQScsICdFJywgMHhjNn0sCiAJeydDJywgJywnLCAweGM3fSwKIAl7J0UnLCAnIScsIDB4Yzh9LAorCXsnRScsICdgJywgMHhjOH0sCS8vIMggVmltIDUueCBjb21wYXRpYmxlCiAJeydFJywgJ1wnJywgMHhjOX0sCiAJeydFJywgJz4nLCAweGNhfSwKKwl7J0UnLCAnXicsIDB4Y2F9LAkvLyDKIFZpbSA1LnggY29tcGF0aWJsZQogCXsnRScsICc6JywgMHhjYn0sCisJeydFJywgJyInLCAweGNifSwJLy8gyyBWaW0gNS54IGNvbXBhdGlibGUKIAl7J0knLCAnIScsIDB4Y2N9LAorCXsnSScsICdgJywgMHhjY30sCS8vIMwgVmltIDUueCBjb21wYXRpYmxlCiAJeydJJywgJ1wnJywgMHhjZH0sCiAJeydJJywgJz4nLCAweGNlfSwKKwl7J0knLCAnXicsIDB4Y2V9LAkvLyDOIFZpbSA1LnggY29tcGF0aWJsZQogCXsnSScsICc6JywgMHhjZn0sCisJeydJJywgJyInLCAweGNmfSwJLy8gzyBWaW0gNS54IGNvbXBhdGlibGUKIAl7J0QnLCAnLScsIDB4ZDB9LAogCXsnTicsICc/JywgMHhkMX0sCisJeydOJywgJ34nLCAweGQxfSwJLy8g0SBWaW0gNS54IGNvbXBhdGlibGUKIAl7J08nLCAnIScsIDB4ZDJ9LAorCXsnTycsICdgJywgMHhkMn0sCS8vINIgVmltIDUueCBjb21wYXRpYmxlCiAJeydPJywgJ1wnJywgMHhkM30sCiAJeydPJywgJz4nLCAweGQ0fSwKKwl7J08nLCAnXicsIDB4ZDR9LAkvLyDUIFZpbSA1LnggY29tcGF0aWJsZQogCXsnTycsICc/JywgMHhkNX0sCisJeydPJywgJ34nLCAweGQ1fSwJLy8g1SBWaW0gNS54IGNvbXBhdGlibGUKIAl7J08nLCAnOicsIDB4ZDZ9LAogCXsnKicsICdYJywgMHhkN30sCisJeycvJywgJ1xcJywgMHhkN30sCS8vINcgVmltIDUueCBjb21wYXRpYmxlCiAJeydPJywgJy8nLCAweGQ4fSwKIAl7J1UnLCAnIScsIDB4ZDl9LAorCXsnVScsICdgJywgMHhkOX0sCS8vINkgVmltIDUueCBjb21wYXRpYmxlCiAJeydVJywgJ1wnJywgMHhkYX0sCiAJeydVJywgJz4nLCAweGRifSwKKwl7J1UnLCAnXicsIDB4ZGJ9LAkvLyDbIFZpbSA1LnggY29tcGF0aWJsZQogCXsnVScsICc6JywgMHhkY30sCiAJeydZJywgJ1wnJywgMHhkZH0sCiAJeydUJywgJ0gnLCAweGRlfSwKKwl7J0knLCAncCcsIDB4ZGV9LAkvLyDeIFZpbSA1LnggY29tcGF0aWJsZQogCXsncycsICdzJywgMHhkZn0sCiAJeydhJywgJyEnLCAweGUwfSwKKwl7J2EnLCAnYCcsIDB4ZTB9LAkvLyDgIFZpbSA1LnggY29tcGF0aWJsZQogCXsnYScsICdcJycsIDB4ZTF9LAogCXsnYScsICc+JywgMHhlMn0sCisJeydhJywgJ14nLCAweGUyfSwJLy8g4iBWaW0gNS54IGNvbXBhdGlibGUKIAl7J2EnLCAnPycsIDB4ZTN9LAorCXsnYScsICd+JywgMHhlM30sCS8vIOMgVmltIDUueCBjb21wYXRpYmxlCiAJeydhJywgJzonLCAweGU0fSwKKwl7J2EnLCAnIicsIDB4ZTR9LAkvLyDkIFZpbSA1LnggY29tcGF0aWJsZQogCXsnYScsICdhJywgMHhlNX0sCisJeydhJywgJ0AnLCAweGU1fSwJLy8g5SBWaW0gNS54IGNvbXBhdGlibGUKIAl7J2EnLCAnZScsIDB4ZTZ9LAogCXsnYycsICcsJywgMHhlN30sCiAJeydlJywgJyEnLCAweGU4fSwKKwl7J2UnLCAnYCcsIDB4ZTh9LAkvLyDoIFZpbSA1LnggY29tcGF0aWJsZQogCXsnZScsICdcJycsIDB4ZTl9LAogCXsnZScsICc+JywgMHhlYX0sCisJeydlJywgJ14nLCAweGVhfSwJLy8g6iBWaW0gNS54IGNvbXBhdGlibGUKIAl7J2UnLCAnOicsIDB4ZWJ9LAorCXsnZScsICciJywgMHhlYn0sCS8vIOsgVmltIDUueCBjb21wYXRpYmxlCiAJeydpJywgJyEnLCAweGVjfSwKKwl7J2knLCAnYCcsIDB4ZWN9LAkvLyDsIFZpbSA1LnggY29tcGF0aWJsZQogCXsnaScsICdcJycsIDB4ZWR9LAogCXsnaScsICc+JywgMHhlZX0sCisJeydpJywgJ14nLCAweGVlfSwJLy8g7iBWaW0gNS54IGNvbXBhdGlibGUKIAl7J2knLCAnOicsIDB4ZWZ9LAogCXsnZCcsICctJywgMHhmMH0sCiAJeyduJywgJz8nLCAweGYxfSwKKwl7J24nLCAnficsIDB4ZjF9LAkvLyDxIFZpbSA1LnggY29tcGF0aWJsZQogCXsnbycsICchJywgMHhmMn0sCisJeydvJywgJ2AnLCAweGYyfSwJLy8g8iBWaW0gNS54IGNvbXBhdGlibGUKIAl7J28nLCAnXCcnLCAweGYzfSwKIAl7J28nLCAnPicsIDB4ZjR9LAorCXsnbycsICdeJywgMHhmNH0sCS8vIPQgVmltIDUueCBjb21wYXRpYmxlCiAJeydvJywgJz8nLCAweGY1fSwKKwl7J28nLCAnficsIDB4ZjV9LAkvLyD1IFZpbSA1LnggY29tcGF0aWJsZQogCXsnbycsICc6JywgMHhmNn0sCiAJeyctJywgJzonLCAweGY3fSwKIAl7J28nLCAnLycsIDB4Zjh9LAogCXsndScsICchJywgMHhmOX0sCisJeyd1JywgJ2AnLCAweGY5fSwJLy8g+SBWaW0gNS54IGNvbXBhdGlibGUKIAl7J3UnLCAnXCcnLCAweGZhfSwKIAl7J3UnLCAnPicsIDB4ZmJ9LAorCXsndScsICdeJywgMHhmYn0sCS8vIPsgVmltIDUueCBjb21wYXRpYmxlCiAJeyd1JywgJzonLCAweGZjfSwKIAl7J3knLCAnXCcnLCAweGZkfSwKIAl7J3QnLCAnaCcsIDB4ZmV9LAogCXsneScsICc6JywgMHhmZn0sCisJeyd5JywgJyInLCAweGZmfSwJLy8geCBYWCAgVmltIDUueCBjb21wYXRpYmxlCiAKICMgICAgICBpZmRlZiBGRUFUX01CWVRFCiAjCWRlZmluZSBVU0VfVU5JQ09ERV9ESUdSQVBIUwpAQCAtOTE1LDYgKzk2OCw3IEBACiAJeydcJycsICcwJywgMHgwMmRhfSwKIAl7J1wnJywgJzsnLCAweDAyZGJ9LAogCXsnXCcnLCAnIicsIDB4MDJkZH0sCisjZGVmaW5lIERHX1NUQVJUX0dSRUVLIDB4MDM4NgogCXsnQScsICclJywgMHgwMzg2fSwKIAl7J0UnLCAnJScsIDB4MDM4OH0sCiAJeydZJywgJyUnLCAweDAzODl9LApAQCAtOTk2LDYgKzEwNTAsNyBAQAogCXsncCcsICczJywgMHgwM2UxfSwKIAl7J1wnJywgJyUnLCAweDAzZjR9LAogCXsnaicsICczJywgMHgwM2Y1fSwKKyNkZWZpbmUgREdfU1RBUlRfQ1lSSUxMSUMgMHgwNDAxCiAJeydJJywgJ08nLCAweDA0MDF9LAogCXsnRCcsICclJywgMHgwNDAyfSwKIAl7J0cnLCAnJScsIDB4MDQwM30sCkBAIC0xMTAwLDYgKzExNTUsNyBAQAogCXsnYycsICczJywgMHgwNDgxfSwKIAl7J0cnLCAnMycsIDB4MDQ5MH0sCiAJeydnJywgJzMnLCAweDA0OTF9LAorI2RlZmluZSBER19TVEFSVF9IRUJSRVcgMHgwNWQwCiAJeydBJywgJysnLCAweDA1ZDB9LAogCXsnQicsICcrJywgMHgwNWQxfSwKIAl7J0cnLCAnKycsIDB4MDVkMn0sCkBAIC0xMTI3LDYgKzExODMsNyBAQAogCXsnUicsICcrJywgMHgwNWU4fSwKIAl7J1MnLCAnaCcsIDB4MDVlOX0sCiAJeydUJywgJysnLCAweDA1ZWF9LAorI2RlZmluZSBER19TVEFSVF9BUkFCSUMgMHgwNjBjCiAJeycsJywgJysnLCAweDA2MGN9LAogCXsnOycsICcrJywgMHgwNjFifSwKIAl7Jz8nLCAnKycsIDB4MDYxZn0sCkBAIC0xMTg5LDYgKzEyNDYsNyBAQAogCXsnNycsICdhJywgMHgwNmY3fSwKIAl7JzgnLCAnYScsIDB4MDZmOH0sCiAJeyc5JywgJ2EnLCAweDA2Zjl9LAorI2RlZmluZSBER19TVEFSVF9MQVRJTl9FWFRFTkRFRCAweDFlMDIKIAl7J0InLCAnLicsIDB4MWUwMn0sCiAJeydiJywgJy4nLCAweDFlMDN9LAogCXsnQicsICdfJywgMHgxZTA2fSwKQEAgLTEyNDAsNyArMTI5OCw5IEBACiAJeydWJywgJz8nLCAweDFlN2N9LAogCXsndicsICc/JywgMHgxZTdkfSwKIAl7J1cnLCAnIScsIDB4MWU4MH0sCisJeydXJywgJ2AnLCAweDFlODB9LCAvLyBleHRyYSBhbHRlcm5hdGl2ZSwgZWFzaWVyIHRvIHJlbWVtYmVyCiAJeyd3JywgJyEnLCAweDFlODF9LAorCXsndycsICdgJywgMHgxZTgxfSwgLy8gZXh0cmEgYWx0ZXJuYXRpdmUsIGVhc2llciB0byByZW1lbWJlcgogCXsnVycsICdcJycsIDB4MWU4Mn0sCiAJeyd3JywgJ1wnJywgMHgxZTgzfSwKIAl7J1cnLCAnOicsIDB4MWU4NH0sCkBAIC0xMjc0LDExICsxMzM0LDE0IEBACiAJeydVJywgJzInLCAweDFlZTZ9LAogCXsndScsICcyJywgMHgxZWU3fSwKIAl7J1knLCAnIScsIDB4MWVmMn0sCisJeydZJywgJ2AnLCAweDFlZjJ9LCAvLyBleHRyYSBhbHRlcm5hdGl2ZSwgZWFzaWVyIHRvIHJlbWVtYmVyCiAJeyd5JywgJyEnLCAweDFlZjN9LAorCXsneScsICdgJywgMHgxZWYzfSwgLy8gZXh0cmEgYWx0ZXJuYXRpdmUsIGVhc2llciB0byByZW1lbWJlcgogCXsnWScsICcyJywgMHgxZWY2fSwKIAl7J3knLCAnMicsIDB4MWVmN30sCiAJeydZJywgJz8nLCAweDFlZjh9LAogCXsneScsICc/JywgMHgxZWY5fSwKKyNkZWZpbmUgREdfU1RBUlRfR1JFRUtfRVhURU5ERUQgMHgxZjAwCiAJeyc7JywgJ1wnJywgMHgxZjAwfSwKIAl7JywnLCAnXCcnLCAweDFmMDF9LAogCXsnOycsICchJywgMHgxZjAyfSwKQEAgLTEyODcsNiArMTM1MCw3IEBACiAJeyc/JywgJywnLCAweDFmMDV9LAogCXsnIScsICc6JywgMHgxZjA2fSwKIAl7Jz8nLCAnOicsIDB4MWYwN30sCisjZGVmaW5lIERHX1NUQVJUX1BVTkNUVUFUSU9OIDB4MjAwMgogCXsnMScsICdOJywgMHgyMDAyfSwKIAl7JzEnLCAnTScsIDB4MjAwM30sCiAJeyczJywgJ00nLCAweDIwMDR9LApAQCAtMTMyNSw2ICsxMzg5LDcgQEAKIAl7JzonLCAnWCcsIDB4MjAzYn0sCiAJeydcJycsICctJywgMHgyMDNlfSwKIAl7Jy8nLCAnZicsIDB4MjA0NH0sCisjZGVmaW5lIERHX1NUQVJUX1NVQl9TVVBFUiAweDIwNzAKIAl7JzAnLCAnUycsIDB4MjA3MH0sCiAJeyc0JywgJ1MnLCAweDIwNzR9LAogCXsnNScsICdTJywgMHgyMDc1fSwKQEAgLTEzNTMsNiArMTQxOCw3IEBACiAJeyc9JywgJ3MnLCAweDIwOGN9LAogCXsnKCcsICdzJywgMHgyMDhkfSwKIAl7JyknLCAncycsIDB4MjA4ZX0sCisjZGVmaW5lIERHX1NUQVJUX0NVUlJFTkNZIDB4MjBhNAogCXsnTCcsICdpJywgMHgyMGE0fSwKIAl7J1AnLCAndCcsIDB4MjBhN30sCiAJeydXJywgJz0nLCAweDIwYTl9LApAQCAtMTM2MCw2ICsxNDI2LDcgQEAKIAl7J0UnLCAndScsIDB4MjBhY30sIC8qIGV1cm8gKi8KIAl7Jz0nLCAnUicsIDB4MjBiZH0sIC8qIHJvdWJsZSAqLwogCXsnPScsICdQJywgMHgyMGJkfSwgLyogcm91YmxlICovCisjZGVmaW5lIERHX1NUQVJUX09USEVSMSAweDIxMDMKIAl7J28nLCAnQycsIDB4MjEwM30sCiAJeydjJywgJ28nLCAweDIxMDV9LAogCXsnbycsICdGJywgMHgyMTA5fSwKQEAgLTEzODIsNiArMTQ0OSw3IEBACiAJeyczJywgJzgnLCAweDIxNWN9LAogCXsnNScsICc4JywgMHgyMTVkfSwKIAl7JzcnLCAnOCcsIDB4MjE1ZX0sCisjZGVmaW5lIERHX1NUQVJUX1JPTUFOIDB4MjE2MAogCXsnMScsICdSJywgMHgyMTYwfSwKIAl7JzInLCAnUicsIDB4MjE2MX0sCiAJeyczJywgJ1InLCAweDIxNjJ9LApAQCAtMTQwNiw2ICsxNDc0LDcgQEAKIAl7J2EnLCAncicsIDB4MjE3OX0sCiAJeydiJywgJ3InLCAweDIxN2F9LAogCXsnYycsICdyJywgMHgyMTdifSwKKyNkZWZpbmUgREdfU1RBUlRfQVJST1dTIDB4MjE5MAogCXsnPCcsICctJywgMHgyMTkwfSwKIAl7Jy0nLCAnIScsIDB4MjE5MX0sCiAJeyctJywgJz4nLCAweDIxOTJ9LApAQCAtMTQxNSw2ICsxNDg0LDcgQEAKIAl7JzwnLCAnPScsIDB4MjFkMH0sCiAJeyc9JywgJz4nLCAweDIxZDJ9LAogCXsnPScsICc9JywgMHgyMWQ0fSwKKyNkZWZpbmUgREdfU1RBUlRfTUFUSCAweDIyMDAKIAl7J0YnLCAnQScsIDB4MjIwMH0sCiAJeydkJywgJ1AnLCAweDIyMDJ9LAogCXsnVCcsICdFJywgMHgyMjAzfSwKQEAgLTE0NzIsNiArMTU0Miw3IEBACiAJeycuJywgJ1AnLCAweDIyYzV9LAogCXsnOicsICczJywgMHgyMmVlfSwKIAl7Jy4nLCAnMycsIDB4MjJlZn0sCisjZGVmaW5lIERHX1NUQVJUX1RFQ0hOSUNBTCAweDIzMDIKIAl7J0UnLCAnaCcsIDB4MjMwMn0sCiAJeyc8JywgJzcnLCAweDIzMDh9LAogCXsnPicsICc3JywgMHgyMzA5fSwKQEAgLTE0ODQsNiArMTU1NSw3IEBACiAJeydJJywgJ2wnLCAweDIzMjF9LAogCXsnPCcsICcvJywgMHgyMzI5fSwKIAl7Jy8nLCAnPicsIDB4MjMyYX0sCisjZGVmaW5lIERHX1NUQVJUX09USEVSMiAweDI0MjMKIAl7J1YnLCAncycsIDB4MjQyM30sCiAJeycxJywgJ2gnLCAweDI0NDB9LAogCXsnMycsICdoJywgMHgyNDQxfSwKQEAgLTE1MDIsNiArMTU3NCw3IEBACiAJeyc3JywgJy4nLCAweDI0OGV9LAogCXsnOCcsICcuJywgMHgyNDhmfSwKIAl7JzknLCAnLicsIDB4MjQ5MH0sCisjZGVmaW5lIERHX1NUQVJUX0RSQVdJTkcgMHgyNTAwCiAJeydoJywgJ2gnLCAweDI1MDB9LAogCXsnSCcsICdIJywgMHgyNTAxfSwKIAl7J3YnLCAndicsIDB4MjUwMn0sCkBAIC0xNTUyLDYgKzE2MjUsNyBAQAogCXsnVicsICdIJywgMHgyNTRifSwKIAl7J0YnLCAnRCcsIDB4MjU3MX0sCiAJeydCJywgJ0QnLCAweDI1NzJ9LAorI2RlZmluZSBER19TVEFSVF9CTE9DSyAweDI1ODAKIAl7J1QnLCAnQicsIDB4MjU4MH0sCiAJeydMJywgJ0InLCAweDI1ODR9LAogCXsnRicsICdCJywgMHgyNTg4fSwKQEAgLTE1NjAsNiArMTYzNCw3IEBACiAJeycuJywgJ1MnLCAweDI1OTF9LAogCXsnOicsICdTJywgMHgyNTkyfSwKIAl7Jz8nLCAnUycsIDB4MjU5M30sCisjZGVmaW5lIERHX1NUQVJUX1NIQVBFUyAweDI1YTAKIAl7J2YnLCAnUycsIDB4MjVhMH0sCiAJeydPJywgJ1MnLCAweDI1YTF9LAogCXsnUicsICdPJywgMHgyNWEyfSwKQEAgLTE1OTMsNiArMTY2OCw3IEBACiAJeydJJywgJ2MnLCAweDI1ZDl9LAogCXsnRicsICdkJywgMHgyNWUyfSwKIAl7J0InLCAnZCcsIDB4MjVlM30sCisjZGVmaW5lIERHX1NUQVJUX1NZTUJPTFMgMHgyNjA1CiAJeycqJywgJzInLCAweDI2MDV9LAogCXsnKicsICcxJywgMHgyNjA2fSwKIAl7JzwnLCAnSCcsIDB4MjYxY30sCkBAIC0xNjEyLDkgKzE2ODgsMTEgQEAKIAl7J00nLCAnYicsIDB4MjY2ZH0sCiAJeydNJywgJ3gnLCAweDI2NmV9LAogCXsnTScsICdYJywgMHgyNjZmfSwKKyNkZWZpbmUgREdfU1RBUlRfRElOR0JBVFMgMHgyNzEzCiAJeydPJywgJ0snLCAweDI3MTN9LAogCXsnWCcsICdYJywgMHgyNzE3fSwKIAl7Jy0nLCAnWCcsIDB4MjcyMH0sCisjZGVmaW5lIERHX1NUQVJUX0NKS19TWU1CT0xTIDB4MzAwMAogCXsnSScsICdTJywgMHgzMDAwfSwKIAl7JywnLCAnXycsIDB4MzAwMX0sCiAJeycuJywgJ18nLCAweDMwMDJ9LApAQCAtMTYzOCw2ICsxNzE2LDcgQEAKIAl7JygnLCAnSScsIDB4MzAxNn0sCiAJeycpJywgJ0knLCAweDMwMTd9LAogCXsnLScsICc/JywgMHgzMDFjfSwKKyNkZWZpbmUgREdfU1RBUlRfSElSQUdBTkEgMHgzMDQxCiAJeydBJywgJzUnLCAweDMwNDF9LAogCXsnYScsICc1JywgMHgzMDQyfSwKIAl7J0knLCAnNScsIDB4MzA0M30sCkBAIC0xNzI2LDYgKzE4MDUsNyBAQAogCXsnMCcsICc1JywgMHgzMDljfSwKIAl7JyonLCAnNScsIDB4MzA5ZH0sCiAJeycrJywgJzUnLCAweDMwOWV9LAorI2RlZmluZSBER19TVEFSVF9LQVRBS0FOQSAweDMwYTEKIAl7J2EnLCAnNicsIDB4MzBhMX0sCiAJeydBJywgJzYnLCAweDMwYTJ9LAogCXsnaScsICc2JywgMHgzMGEzfSwKQEAgLTE4MjAsNiArMTkwMCw3IEBACiAJeyctJywgJzYnLCAweDMwZmN9LAogCXsnKicsICc2JywgMHgzMGZkfSwKIAl7JysnLCAnNicsIDB4MzBmZX0sCisjZGVmaW5lIERHX1NUQVJUX0JPUE9NT0ZPIDB4MzEwNQogCXsnYicsICc0JywgMHgzMTA1fSwKIAl7J3AnLCAnNCcsIDB4MzEwNn0sCiAJeydtJywgJzQnLCAweDMxMDd9LApAQCAtMTg1OSw2ICsxOTQwLDcgQEAKIAl7J3YnLCAnNCcsIDB4MzEyYX0sCiAJeyduJywgJ0cnLCAweDMxMmJ9LAogCXsnZycsICduJywgMHgzMTJjfSwKKyNkZWZpbmUgREdfU1RBUlRfT1RIRVIzIDB4MzIyMAogCXsnMScsICdjJywgMHgzMjIwfSwKIAl7JzInLCAnYycsIDB4MzIyMX0sCiAJeyczJywgJ2MnLCAweDMyMjJ9LApAQCAtMTg3NSw2OSArMTk1Nyw4IEBACiAJeydmJywgJ2wnLCAweGZiMDJ9LAogCXsnZicsICd0JywgMHhmYjA1fSwKIAl7J3MnLCAndCcsIDB4ZmIwNn0sCi0KLQkvKiBleHRyYSBhbHRlcm5hdGl2ZXMsIGVhc2llciB0byByZW1lbWJlciAqLwotCXsnVycsICdgJywgMHgxZTgwfSwKLQl7J3cnLCAnYCcsIDB4MWU4MX0sCi0JeydZJywgJ2AnLCAweDFlZjJ9LAotCXsneScsICdgJywgMHgxZWYzfSwKLQogIyAgICAgIGVuZGlmIC8qIEZFQVRfTUJZVEUgKi8KIAotCS8qIFZpbSA1LnggY29tcGF0aWJsZSBkaWdyYXBocyB0aGF0IGRvbid0IGNvbmZsaWN0IHdpdGggdGhlIGFib3ZlICovCi0Jeyd+JywgJyEnLCAxNjF9LAkvKiChICovCi0JeydjJywgJ3wnLCAxNjJ9LAkvKiCiICovCi0JeyckJywgJyQnLCAxNjN9LAkvKiCjICovCi0JeydvJywgJ3gnLCAxNjR9LAkvKiCkIC0gY3VycmVuY3kgc3ltYm9sIGluIElTTyA4ODU5LTEgKi8KLQl7J1knLCAnLScsIDE2NX0sCS8qIKUgKi8KLQl7J3wnLCAnfCcsIDE2Nn0sCS8qIKYgKi8KLQl7J2MnLCAnTycsIDE2OX0sCS8qIKkgKi8KLQl7Jy0nLCAnLCcsIDE3Mn0sCS8qIKwgKi8KLQl7Jy0nLCAnPScsIDE3NX0sCS8qIK8gKi8KLQl7J34nLCAnbycsIDE3Nn0sCS8qILAgKi8KLQl7JzInLCAnMicsIDE3OH0sCS8qILIgKi8KLQl7JzMnLCAnMycsIDE3OX0sCS8qILMgKi8KLQl7J3AnLCAncCcsIDE4Mn0sCS8qILYgKi8KLQl7J34nLCAnLicsIDE4M30sCS8qILcgKi8KLQl7JzEnLCAnMScsIDE4NX0sCS8qILkgKi8KLQl7J34nLCAnPycsIDE5MX0sCS8qIL8gKi8KLQl7J0EnLCAnYCcsIDE5Mn0sCS8qIMAgKi8KLQl7J0EnLCAnXicsIDE5NH0sCS8qIMIgKi8KLQl7J0EnLCAnficsIDE5NX0sCS8qIMMgKi8KLQl7J0EnLCAnIicsIDE5Nn0sCS8qIMQgKi8KLQl7J0EnLCAnQCcsIDE5N30sCS8qIMUgKi8KLQl7J0UnLCAnYCcsIDIwMH0sCS8qIMggKi8KLQl7J0UnLCAnXicsIDIwMn0sCS8qIMogKi8KLQl7J0UnLCAnIicsIDIwM30sCS8qIMsgKi8KLQl7J0knLCAnYCcsIDIwNH0sCS8qIMwgKi8KLQl7J0knLCAnXicsIDIwNn0sCS8qIM4gKi8KLQl7J0knLCAnIicsIDIwN30sCS8qIM8gKi8KLQl7J04nLCAnficsIDIwOX0sCS8qINEgKi8KLQl7J08nLCAnYCcsIDIxMH0sCS8qINIgKi8KLQl7J08nLCAnXicsIDIxMn0sCS8qINQgKi8KLQl7J08nLCAnficsIDIxM30sCS8qINUgKi8KLQl7Jy8nLCAnXFwnLCAyMTV9LAkvKiDXIC0gbXVsdGlwbGljYXRpb24gc3ltYm9sIGluIElTTyA4ODU5LTEgKi8KLQl7J1UnLCAnYCcsIDIxN30sCS8qINkgKi8KLQl7J1UnLCAnXicsIDIxOX0sCS8qINsgKi8KLQl7J0knLCAncCcsIDIyMn0sCS8qIN4gKi8KLQl7J2EnLCAnYCcsIDIyNH0sCS8qIOAgKi8KLQl7J2EnLCAnXicsIDIyNn0sCS8qIOIgKi8KLQl7J2EnLCAnficsIDIyN30sCS8qIOMgKi8KLQl7J2EnLCAnIicsIDIyOH0sCS8qIOQgKi8KLQl7J2EnLCAnQCcsIDIyOX0sCS8qIOUgKi8KLQl7J2UnLCAnYCcsIDIzMn0sCS8qIOggKi8KLQl7J2UnLCAnXicsIDIzNH0sCS8qIOogKi8KLQl7J2UnLCAnIicsIDIzNX0sCS8qIOsgKi8KLQl7J2knLCAnYCcsIDIzNn0sCS8qIOwgKi8KLQl7J2knLCAnXicsIDIzOH0sCS8qIO4gKi8KLQl7J24nLCAnficsIDI0MX0sCS8qIPEgKi8KLQl7J28nLCAnYCcsIDI0Mn0sCS8qIPIgKi8KLQl7J28nLCAnXicsIDI0NH0sCS8qIPQgKi8KLQl7J28nLCAnficsIDI0NX0sCS8qIPUgKi8KLQl7J3UnLCAnYCcsIDI0OX0sCS8qIPkgKi8KLQl7J3UnLCAnXicsIDI1MX0sCS8qIPsgKi8KLQl7J3knLCAnIicsIDI1NX0sCS8qIHggWFggKi8KLQogCXtOVUwsIE5VTCwgTlVMfQogICAgICAgIH07CiAKQEAgLTE5ODYsNyArMjAwNyw3IEBACiAgICAgZGlncl9UCSpkcDsKICAgICBzdGF0aWMgICAgICBjaGFyX3UgICAgICByWzNdOwogCi0jaWYgZGVmaW5lZChGRUFUX01CWVRFKSAmJiBkZWZpbmVkKFVTRV9VTklDT0RFX0RJR1JBUEhTKQorI2lmIGRlZmluZWQoVVNFX1VOSUNPREVfRElHUkFQSFMpCiAgICAgaWYgKCFlbmNfdXRmOCkKICAgICB7CiAJY2hhcl91CSAgICBidWZbNl0sICp0bzsKQEAgLTIyNDAsMTggKzIyNjEsMzAgQEAKICAgICB9CiB9CiAKKyNpZiBkZWZpbmVkKFVTRV9VTklDT0RFX0RJR1JBUEhTKQorICAgIHN0YXRpYyB2b2lkCitkaWdyYXBoX2hlYWRlcihjaGFyICptc2cpCit7CisgICAgaWYgKG1zZ19jb2wgPiAwKQorCW1zZ19wdXRjaGFyKCdcbicpOworICAgIG1zZ19vdXR0cmFuc19hdHRyKChjaGFyX3UgKiltc2csIEhMX0FUVFIoSExGX0NNKSk7CisgICAgbXNnX3B1dGNoYXIoJ1xuJyk7Cit9CisjZW5kaWYKKwogICAgIHZvaWQKLWxpc3RkaWdyYXBocyh2b2lkKQorbGlzdGRpZ3JhcGhzKGludCB1c2VfaGVhZGVycykKIHsKICAgICBpbnQJCWk7CiAgICAgZGlncl9UCSpkcDsKKyAgICByZXN1bHRfVAlwcmV2aW91cyA9IDA7CiAKICAgICBtc2dfcHV0Y2hhcignXG4nKTsKIAogICAgIGRwID0gZGlncmFwaGRlZmF1bHQ7CiAgICAgZm9yIChpID0gMDsgZHAtPmNoYXIxICE9IE5VTCAmJiAhZ290X2ludDsgKytpKQogICAgIHsKLSNpZiBkZWZpbmVkKFVTRV9VTklDT0RFX0RJR1JBUEhTKSAmJiBkZWZpbmVkKEZFQVRfTUJZVEUpCisjaWYgZGVmaW5lZChVU0VfVU5JQ09ERV9ESUdSQVBIUykKIAlkaWdyX1QgdG1wOwogCiAJLyogTWF5IG5lZWQgdG8gY29udmVydCB0aGUgcmVzdWx0IHRvICdlbmNvZGluZycuICovCkBAIC0yMjYwLDcgKzIyOTMsNyBAQAogCXRtcC5yZXN1bHQgPSBnZXRleGFjdGRpZ3JhcGgodG1wLmNoYXIxLCB0bXAuY2hhcjIsIEZBTFNFKTsKIAlpZiAodG1wLnJlc3VsdCAhPSAwICYmIHRtcC5yZXN1bHQgIT0gdG1wLmNoYXIyCiAJCQkJCSAgJiYgKGhhc19tYnl0ZSB8fCB0bXAucmVzdWx0IDw9IDI1NSkpCi0JICAgIHByaW50ZGlncmFwaCgmdG1wKTsKKwkgICAgcHJpbnRkaWdyYXBoKCZ0bXAsIHVzZV9oZWFkZXJzID8gJnByZXZpb3VzIDogTlVMTCk7CiAjZWxzZQogCiAJaWYgKGdldGV4YWN0ZGlncmFwaChkcC0+Y2hhcjEsIGRwLT5jaGFyMiwgRkFMU0UpID09IGRwLT5yZXN1bHQKQEAgLTIyNjgsNyArMjMwMSw3IEBACiAJCSYmIChoYXNfbWJ5dGUgfHwgZHAtPnJlc3VsdCA8PSAyNTUpCiAjIGVuZGlmCiAJCSkKLQkgICAgcHJpbnRkaWdyYXBoKGRwKTsKKwkgICAgcHJpbnRkaWdyYXBoKGRwLCB1c2VfaGVhZGVycyA/ICZwcmV2aW91cyA6IE5VTEwpOwogI2VuZGlmCiAJKytkcDsKIAl1aV9icmVha2NoZWNrKCk7CkBAIC0yMjc3LDcgKzIzMTAsMTIgQEAKICAgICBkcCA9IChkaWdyX1QgKil1c2VyX2RpZ3JhcGhzLmdhX2RhdGE7CiAgICAgZm9yIChpID0gMDsgaSA8IHVzZXJfZGlncmFwaHMuZ2FfbGVuICYmICFnb3RfaW50OyArK2kpCiAgICAgewotCXByaW50ZGlncmFwaChkcCk7CisjaWYgZGVmaW5lZChVU0VfVU5JQ09ERV9ESUdSQVBIUykKKwlpZiAocHJldmlvdXMgPj0gMCAmJiB1c2VfaGVhZGVycykKKwkgICAgZGlncmFwaF9oZWFkZXIoXygiQ3VzdG9tIikpOworCXByZXZpb3VzID0gLTE7CisjZW5kaWYKKwlwcmludGRpZ3JhcGgoZHAsIE5VTEwpOwogCXVpX2JyZWFrY2hlY2soKTsKIAkrK2RwOwogICAgIH0KQEAgLTIyODUsOCArMjMyMyw0MSBAQAogCQkJICAgICAgIHdyb25nLCBpbiB3aGljaCBjYXNlIHdlIG1lc3NlZCB1cCBTY3JlZW5MaW5lcyAqLwogfQogCitzdHJ1Y3QgZGdfaGVhZGVyX2VudHJ5IHsKKyAgICBpbnQJICAgIGRnX3N0YXJ0OworICAgIGNoYXIgICAgKmRnX2hlYWRlcjsKK30gaGVhZGVyX3RhYmxlW10gPSB7CisgICAge0RHX1NUQVJUX0xBVElOLCBOXygiTGF0aW4gc3VwcGxlbWVudCIpfSwKKyAgICB7REdfU1RBUlRfR1JFRUssIE5fKCJHcmVlayBhbmQgQ29wdGljIil9LAorICAgIHtER19TVEFSVF9DWVJJTExJQywgTl8oIkN5cmlsbGljIil9LAorICAgIHtER19TVEFSVF9IRUJSRVcsIE5fKCJIZWJyZXciKX0sCisgICAge0RHX1NUQVJUX0FSQUJJQywgTl8oIkFyYWJpYyIpfSwKKyAgICB7REdfU1RBUlRfTEFUSU5fRVhURU5ERUQsIE5fKCJMYXRpbiBleHRlbmRlZCIpfSwKKyAgICB7REdfU1RBUlRfR1JFRUtfRVhURU5ERUQsIE5fKCJHcmVlayBleHRlbmRlZCIpfSwKKyAgICB7REdfU1RBUlRfUFVOQ1RVQVRJT04sIE5fKCJQdW5jdHVhdGlvbiIpfSwKKyAgICB7REdfU1RBUlRfU1VCX1NVUEVSLCBOXygiU3VwZXItIGFuZCBzdWJzY3JpcHRzIil9LAorICAgIHtER19TVEFSVF9DVVJSRU5DWSwgTl8oIkN1cnJlbmN5Iil9LAorICAgIHtER19TVEFSVF9PVEhFUjEsIE5fKCJPdGhlciIpfSwKKyAgICB7REdfU1RBUlRfUk9NQU4sIE5fKCJSb21hbiBudW1iZXJzIil9LAorICAgIHtER19TVEFSVF9BUlJPV1MsIE5fKCJBcnJvd3MiKX0sCisgICAge0RHX1NUQVJUX01BVEgsIE5fKCJNYXRoZW1hdGljYWwgb3BlcmF0b3JzIil9LAorICAgIHtER19TVEFSVF9URUNITklDQUwsIE5fKCJUZWNobmljYWwiKX0sCisgICAge0RHX1NUQVJUX09USEVSMiwgTl8oIk90aGVyIil9LAorICAgIHtER19TVEFSVF9EUkFXSU5HLCBOXygiQm94IGRyYXdpbmciKX0sCisgICAge0RHX1NUQVJUX0JMT0NLLCBOXygiQmxvY2sgZWxlbWVudHMiKX0sCisgICAge0RHX1NUQVJUX1NIQVBFUywgTl8oIkdlb21ldHJpYyBzaGFwZXMiKX0sCisgICAge0RHX1NUQVJUX1NZTUJPTFMsIE5fKCJTeW1ib2xzIil9LAorICAgIHtER19TVEFSVF9ESU5HQkFUUywgTl8oIkRpbmdiYXRzIil9LAorICAgIHtER19TVEFSVF9DSktfU1lNQk9MUywgTl8oIkNKSyBzeW1ib2xzIGFuZCBwdW5jdHVhdGlvbiIpfSwKKyAgICB7REdfU1RBUlRfSElSQUdBTkEsIE5fKCJIaXJhZ2FuYSIpfSwKKyAgICB7REdfU1RBUlRfS0FUQUtBTkEsIE5fKCJLYXRha2FuYSIpfSwKKyAgICB7REdfU1RBUlRfQk9QT01PRk8sIE5fKCJCb3BvbW9mbyIpfSwKKyAgICB7REdfU1RBUlRfT1RIRVIzLCBOXygiT3RoZXIiKX0sCisgICAgezB4ZmZmZmZmZiwgTlVMTH0sCit9OworCiAgICAgc3RhdGljIHZvaWQKLXByaW50ZGlncmFwaChkaWdyX1QgKmRwKQorcHJpbnRkaWdyYXBoKGRpZ3JfVCAqZHAsIHJlc3VsdF9UICpwcmV2aW91cykKIHsKICAgICBjaGFyX3UJYnVmWzMwXTsKICAgICBjaGFyX3UJKnA7CkBAIC0yMzA0LDYgKzIzNzUsMjIgQEAKIAogICAgIGlmIChkcC0+cmVzdWx0ICE9IDApCiAgICAgeworI2lmIGRlZmluZWQoVVNFX1VOSUNPREVfRElHUkFQSFMpCisJaWYgKHByZXZpb3VzICE9IE5VTEwpCisJeworCSAgICBpbnQgaTsKKworCSAgICBmb3IgKGkgPSAwOyBoZWFkZXJfdGFibGVbaV0uZGdfaGVhZGVyICE9IE5VTEw7ICsraSkKKwkJaWYgKCpwcmV2aW91cyA8IGhlYWRlcl90YWJsZVtpXS5kZ19zdGFydAorCQkJJiYgZHAtPnJlc3VsdCA+PSBoZWFkZXJfdGFibGVbaV0uZGdfc3RhcnQKKwkJCSYmIGRwLT5yZXN1bHQgPCBoZWFkZXJfdGFibGVbaSArIDFdLmRnX3N0YXJ0KQorCQl7CisJCSAgICBkaWdyYXBoX2hlYWRlcihfKGhlYWRlcl90YWJsZVtpXS5kZ19oZWFkZXIpKTsKKwkJICAgIGJyZWFrOworCQl9CisJICAgICpwcmV2aW91cyA9IGRwLT5yZXN1bHQ7CisJfQorI2VuZGlmCiAJaWYgKG1zZ19jb2wgPiBDb2x1bW5zIC0gbGlzdF93aWR0aCkKIAkgICAgbXNnX3B1dGNoYXIoJ1xuJyk7CiAJaWYgKG1zZ19jb2wpCkBAIC0yMzE0LDYgKzI0MDEsOSBAQAogCSpwKysgPSBkcC0+Y2hhcjE7CiAJKnArKyA9IGRwLT5jaGFyMjsKIAkqcCsrID0gJyAnOworCSpwID0gTlVMOworCW1zZ19vdXR0cmFucyhidWYpOworCXAgPSBidWY7CiAjaWZkZWYgRkVBVF9NQllURQogCWlmIChoYXNfbWJ5dGUpCiAJewpAQCAtMjMyNSw2ICsyNDE1LDkgQEAKIAllbHNlCiAjZW5kaWYKIAkgICAgKnArKyA9IChjaGFyX3UpZHAtPnJlc3VsdDsKKwkqcCA9IE5VTDsKKwltc2dfb3V0dHJhbnNfYXR0cihidWYsIEhMX0FUVFIoSExGXzgpKTsKKwlwID0gYnVmOwogCWlmIChjaGFyMmNlbGxzKGRwLT5yZXN1bHQpID09IDEpCiAJICAgICpwKysgPSAnICc7CiAJdmltX3NucHJpbnRmKChjaGFyICopcCwgc2l6ZW9mKGJ1ZikgLSAocCAtIGJ1ZiksICIgJTNkIiwgZHAtPnJlc3VsdCk7Cg==